1.


/**
* FWP, Ausgewählte Probleme aus dem ACM Programming Contest, WS09
* Problem: 679 - Dropping Balls
* Link: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=8&page=show_problem&problem=620
*
* @author Dennis Wilfert
* @version 1.0, 12/17/2009
*
* Status : Accepted
* Runtime: 0.416
*/
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;

class Main {

public static void main(String[] args) throws IOException {

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
PrintWriter writer = new PrintWriter(new BufferedOutputStream(System.out));
StringTokenizer token;

int i;
int I, D, node;
int cases = Integer.parseInt(reader.readLine());

while (cases > 0) {
token = new StringTokenizer(reader.readLine());
D = Integer.parseInt(token.nextToken());
I = Integer.parseInt(token.nextToken());

node = 1;
// I befindet sich auf der linken Seite wenn sie ungerade ist
// und auf der Rechten Seite, wenn sie gerade ist
for (i = 0; i < D - 1; i++) {
if(I%2 == 0){
node = 2*node+1;
I /= 2;
}
else{
node *= 2;
I = (I+1)/2;
}
}
cases--;

writer.println(node);
}
writer.flush();

}
}