#include <bits/stdc++.h>
using namespace std;
long long dp[55][55][2][2];
bool vis[55][55][2][2];
int ans[55];
long long calc(int l, int r, bool rev, bool inv) {
  if (l > r) return 1;
  if (vis[l][r][rev][inv]) return dp[l][r][rev][inv];
  vis[l][r][rev][inv] = true;
  long long &res = dp[l][r][rev][inv];
  res = 0;
  for (int i = 0; i < 2; i++) {
    if (ans[l] == (i ^ 1)) continue;
    for (int j = 0; j < 2; j++) {
      if (ans[r] == (j ^ 1)) continue;
      if (l == r && i != j) continue;
      if ((rev || i <= j) && (inv || i <= (j ^ 1)))
        res += calc(l + 1, r - 1, rev | (i < j), inv | (i < (j ^ 1)));
    }
  }
  return res;
}
int main() {
  int n;
  long long k;
  scanf("%d%lld", &n, &k);
  memset(ans, -1, sizeof(ans));
  ans[0] = 0;
  if (calc(0, n - 1, false, false) <= k) {
    puts("-1");
    return 0;
  }
  for (int i = 1; i < n; i++) {
    ans[i] = 0;
    memset(vis, false, sizeof(vis));
    long long res = calc(0, n - 1, false, false);
    if (res <= k) {
      k -= res;
      ans[i] = 1;
    }
  }
  for (int i = 0; i < n; i++) putchar(ans[i] + '0');
  puts("");
  return 0;
}
