static void Main(string[] args)
    {
        ulong n = ulong.Parse(Console.ReadLine());
        int   p = int.Parse(Console.ReadLine());
        int   q = int.Parse(Console.ReadLine());
        int   k = int.Parse(Console.ReadLine());
        //bool[] newBitValues = new bool[27]; //bool(27);

        ModifyBitsU mBU         = new ModifyBitsU(n);
        int         qCoeficient = q - p;

        for (int i = p; i <= (p + k - 1); i++)
        {
            bool pBitValue = mBU.GetBitValue(i);
            bool qBitValue = mBU.GetBitValue(i + qCoeficient);
            mBU.SetBitValue(i, qBitValue);
            mBU.SetBitValue(i + qCoeficient, pBitValue);
        }

        Console.WriteLine("{0}", mBU.Value);
    }
    static void Main(string[] args)
    {
        ulong value = ulong.Parse(Console.ReadLine());

        bool[] newBitValues = new bool[27]; //bool(27);

        ModifyBitsU mBU = new ModifyBitsU(value);

        newBitValues[24] = mBU.GetBitValue(3);
        newBitValues[25] = mBU.GetBitValue(4);
        newBitValues[26] = mBU.GetBitValue(5);

        newBitValues[3] = mBU.GetBitValue(24);
        newBitValues[4] = mBU.GetBitValue(25);
        newBitValues[5] = mBU.GetBitValue(26);

        for (int i = 3; i <= 5; i++)
        {
            mBU.SetBitValue(i, newBitValues[i]);
            mBU.SetBitValue(i + 21, newBitValues[i + 21]);
        }

        Console.WriteLine(mBU.Value);
    }