#include <bits/stdc++.h>
using namespace std;
int n;
long long k;
int ans[55];
long long f[55][3][3];
long long dp(int x, int a, int b) {
  if (f[x][a][b] != -1) return f[x][a][b];
  int i, j;
  if (2 * x >= n) return (f[x][a][b] = 1LL);
  long long sum = 0;
  for (i = 0; i < 2; i++) {
    if ((ans[x] == -1) || (ans[x] == i))
      for (j = 0; j < 2; j++) {
        if ((ans[n - 1 - x] == -1) || (ans[n - 1 - x] == j)) {
          if (((i == j) || (2 * x + 1 != n)) &&
              ((a || (i <= j)) && (b || (i <= 1 - j))))
            sum += dp(x + 1, a || (i < j), b || (i < 1 - j));
        }
      }
  }
  f[x][a][b] = sum;
  ;
  return sum;
}
int main() {
  long long tmp;
  int i, j;
  scanf("%d%I64d", &n, &k);
  k++;
  memset(ans, -1, sizeof ans);
  memset(f, -1, sizeof f);
  if (dp(0, 0, 0) < k) {
    printf("-1");
    return 0;
  }
  ans[0] = 0;
  for (i = 1; i < n; i++) {
    memset(f, -1, sizeof f);
    ans[i] = 0;
    if ((dp(0, 0, 0)) < k) {
      ans[i] = 1;
      k -= dp(0, 0, 0);
    }
  }
  for (i = 0; i < n; i++) printf("%d", ans[i]);
}
