The following problem is well-known: given integers n and m, calculate

<image>, 

where 2n = 2·2·...·2 (n factors), and <image> denotes the remainder of division of x by y.

You are asked to solve the "reverse" problem. Given integers n and m, calculate

<image>. 

Input

The first line contains a single integer n (1 ≤ n ≤ 108).

The second line contains a single integer m (1 ≤ m ≤ 108).

Output

Output a single integer — the value of <image>.

Examples

Input

4
42


Output

10


Input

1
58


Output

0


Input

98765432
23456789


Output

23456789

Note

In the first example, the remainder of division of 42 by 24 = 16 is equal to 10.

In the second example, 58 is divisible by 21 = 2 without remainder, and the answer is 0.

import java.io.*;
import java.util.*;

import static java.lang.Math.*;

public class Main {

    static class Solution extends Helper {

        public void solve(InputReader in, PrintWriter out) {
            long a = in.getLong();
            long b = in.getLong();
            out.print(b % (long) pow(2, a));
        }
    }

    public static void main(String[] args) {
        Helper helper = new Helper();
        helper.RUN();
    }

    public static class Helper {

        private boolean online_judge = System.getProperty("ONLINE_JUDGE") != null;
        public static final int INF = Integer.MAX_VALUE;
        public static final long INFF = Long.MAX_VALUE;
        public static final double PI = Math.PI;

        public int sqr() {
            return sqr();
        }

        public long sqr(int a) {
            return (long) a * a;
        }

        public long sqr(long a) {
            return a * a;
        }

        public double sqr(double a) {
            return a * a;
        }

        private void RUN() {
            Solution solution = new Solution();
            InputStream inputStream = System.in;
            if (!online_judge)
                try {
                    inputStream = online_judge ? System.in : new FileInputStream("./src/com/company/in.txt");
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
            OutputStream outputStream = System.out;
            InputReader in = new InputReader(inputStream);
            PrintWriter out = new PrintWriter(outputStream);

            if (!online_judge) {
                int cur_test = 1;
                while (true) {

                    try {
                        if (!in.bufferedReader.ready()) break;
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    out.print("test#" + cur_test + "\n\n");
                    solution.solve(in, out);
                    out.print("\n\n");
                    cur_test++;

                }
                try {
                    COPY_FILE(inputStream, outputStream, in, out);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } else
                solution.solve(in, out);
            out.close();
            out.flush();
        }

        private void COPY_FILE(InputStream inputStream, OutputStream outputStream, InputReader in, PrintWriter out) throws IOException {
            inputStream = new FileInputStream("./src/com/company/Main.java");
            outputStream = new FileOutputStream("./src/com/company/output/Main.java");
            in = new InputReader(inputStream);
            out = new PrintWriter(outputStream);
            String line = "";
            while (in.bufferedReader.ready()) {
                line = in.getLine();
                if (!line.equals("package com.company;"))
                    out.write(line + "\n");
            }
            out.close();
        }
    }

    public static class InputReader {
        private BufferedReader bufferedReader;
        private StringTokenizer stringTokenizer;
        private String line;

        public InputReader(InputStream inputStream) {
            bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            stringTokenizer = null;
        }

        public String getLine() {
            line = "";
            try {
                line = bufferedReader.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return line;
        }

        public String getString() {
            while (stringTokenizer == null || !stringTokenizer.hasMoreTokens()) {
                try {
                    stringTokenizer = new StringTokenizer(bufferedReader.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return stringTokenizer.nextToken();
        }

        public int getInt() {
            return Integer.parseInt(getString());
        }

        public long getLong() {
            return Long.parseLong(getString());
        }

        public double getDouble() {
            return Double.parseDouble(getString());
        }
    }
}
