#include <bits/stdc++.h>
using namespace std;
long long f[55][2][2], K;
int n;
char ans[55];
long long calc(int pos) {
  memset(f, 0, sizeof(f));
  if (pos < n || ans[n - 1] == '0') f[1][0][1] = 1;
  if (pos < n || ans[n - 1] == '1') f[1][1][0] = 1;
  for (int i = 2; i <= (n >> 1) + (n & 1); i++) {
    if (i > (n >> 1)) {
      if (i <= pos) {
        int x = ans[i - 1] - '0';
        if (x == 0) {
          f[i][0][1] += f[i - 1][0][1];
          f[i][1][1] += f[i - 1][1][0];
          f[i][1][1] += f[i - 1][1][1];
        } else {
          f[i][0][1] += f[i - 1][0][1];
          f[i][1][1] += f[i - 1][1][1];
        }
      } else {
        f[i][0][1] += f[i - 1][0][1];
        f[i][1][1] += f[i - 1][1][0];
        f[i][1][1] += f[i - 1][1][1];
        f[i][0][1] += f[i - 1][0][1];
        f[i][1][1] += f[i - 1][1][1];
      }
      break;
    }
    if (i <= pos) {
      int x = ans[i - 1] - '0';
      if (n + 1 - i <= pos) {
        int y = ans[n + 1 - i - 1] - '0';
        if (x == 0) {
          if (y == 0) {
            f[i][0][1] += f[i - 1][0][1];
            f[i][1][1] += f[i - 1][1][0];
            f[i][1][1] += f[i - 1][1][1];
          } else {
            f[i][1][0] += f[i - 1][1][0];
            f[i][1][1] += f[i - 1][0][1];
            f[i][1][1] += f[i - 1][1][1];
          }
        } else {
          if (y == 1) {
            f[i][0][1] += f[i - 1][0][1];
            f[i][1][1] += f[i - 1][1][1];
          } else {
            f[i][1][0] += f[i - 1][1][0];
            f[i][1][1] += f[i - 1][1][1];
          }
        }
      } else {
        if (x == 0) {
          f[i][0][1] += f[i - 1][0][1];
          f[i][1][1] += f[i - 1][1][0];
          f[i][1][1] += f[i - 1][1][1];
          f[i][1][0] += f[i - 1][1][0];
          f[i][1][1] += f[i - 1][0][1];
          f[i][1][1] += f[i - 1][1][1];
        } else {
          f[i][0][1] += f[i - 1][0][1];
          f[i][1][1] += f[i - 1][1][1];
          f[i][1][0] += f[i - 1][1][0];
          f[i][1][1] += f[i - 1][1][1];
        }
      }
    } else {
      f[i][0][1] += f[i - 1][0][1];
      f[i][1][1] += f[i - 1][1][0];
      f[i][1][1] += f[i - 1][1][1];
      f[i][1][0] += f[i - 1][1][0];
      f[i][1][1] += f[i - 1][1][1];
      f[i][1][0] += f[i - 1][1][0];
      f[i][1][1] += f[i - 1][0][1];
      f[i][1][1] += f[i - 1][1][1];
      f[i][0][1] += f[i - 1][0][1];
      f[i][1][1] += f[i - 1][1][1];
    }
  }
  int t = (n >> 1) + (n & 1);
  return f[t][0][1] + f[t][1][0] + f[t][1][1];
}
int main() {
  scanf("%d%lld", &n, &K);
  ans[0] = '0';
  ++K;
  if (calc(1) < K) {
    puts("-1");
    return 0;
  }
  for (int i = 2; i <= n; i++) {
    ans[i - 1] = '0';
    long long tmp = calc(i);
    if (tmp < K) {
      K -= tmp;
      ans[i - 1] = '1';
    }
  }
  ans[n] = 0;
  puts(ans);
  return 0;
}
