#include <bits/stdc++.h>
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
inline long long read() {
  register long long s = 0, w = 1;
  register char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') w = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    s = s * 10 + ch - '0';
    ch = getchar();
  }
  return w > 0 ? s : -s;
}
inline void write(register long long x) {
  if (x > 9) write(x / 10);
  putchar(x % 10 + '0');
}
signed main() {
  register int n, d, x = 0, y = 0, v = 0, r = 0;
  n = read();
  d = read();
  for (register int i = 2 * n - 2; i >= 0; i -= 2) {
    r = 4 * v | (d >> i) & 3;
    x = (x << 1) | (0x936c >> r) & 1;
    y = (y << 1) | (0x39c6 >> r) & 1;
    v = (0x3e6b94c1 >> 2 * r) & 3;
  }
  write(x);
  printf(" ");
  write(y);
}
