//#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define rep(i,l,r) for(i = l; i <= r; i++) #define red(i,l,r) for(i=(l);i>=(r);i--) #define u_long unsigned long long #define fff(i, u) for(i = head[u]; i != -1; i = nxt[i]) #define fin() freopen("D:\\CodeBlocks\\2015-12-30\\in.txt", "r", stdin); #define fout() freopen("out.txt", "w", stdout) #define clr(vis, a) memset(vis, a, sizeof(vis)) #define LL long long #define ls id << 1 #define rs id << 1 | 1 #define lson id << 1, l, mid #define rson id << 1 | 1, mid + 1, r #define mid ( (l + r) >> 1 ) #define pb push_back #define mp make_pair #define pii pair #define X first #define Y second #define eps 1e-4 #define pi acos(-1) const int maxn = 1e5 + 10; const int maxm = 3e4 + 10; const LL inf = 1e16 + 10; const LL mod = 1e9+7; int getint() { char c; while((c = getchar()) && !(c >= '0' && c <= '9') && c != '-'); int ret = c - '0', sgn = 0; if(c == '-') sgn = 1, ret = 0; while((c = getchar()) && c >= '0' && c <= '9') ret = ret * 10 + c - '0'; if(sgn) ret = -ret; return ret; } int main(){ int T = getint(); while(T--){ int n = getint(), m = getint(); LL ans = 0; for(int i = 0; i < 32; i ++){ if(n & ((LL)1 << i)){ if(i <= m) ans ++; else ans += (LL)1 << (i - m); } } cout << ans << endl; } return 0; }