#include <bits/stdc++.h>
using namespace std;
long long dp[55][55][2][2];
int n;
long long k;
int ans[55];
long long dfs(int l, int r, int rev, int las) {
  if (l > r) return 1;
  if (dp[l][r][rev][las] != -1) return dp[l][r][rev][las];
  long long res = 0;
  for (int i = 0; i < 2; i++)
    for (int j = 0; j < 2; j++)
      if ((ans[l] == -1 || ans[l] == i) && (ans[r] == -1 || ans[r] == j) &&
          (l < r || i == j) && (rev || i <= j) && (las || i <= (j ^ 1)))
        res += dfs(l + 1, r - 1, rev || (i < j), las || (i < (j ^ 1)));
  dp[l][r][rev][las] = res;
  return res;
}
int main() {
  scanf("%d%I64d", &n, &k);
  k++;
  memset(ans, -1, sizeof ans);
  memset(dp, -1, sizeof dp);
  memset(dp, -1, sizeof dp);
  if (dfs(1, n, 0, 0) < k) {
    printf("-1");
    return 0;
  }
  ans[1] = 0;
  for (int i = 2; i <= n; i++) {
    ans[i] = 0;
    memset(dp, -1, sizeof dp);
    long long sum = dfs(1, n, 0, 0);
    if (sum < k) {
      k -= sum;
      ans[i] = 1;
    }
  }
  for (int i = 1; i <= n; i++) printf("%d", ans[i]);
}
