#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void checkmin(T &a, const T &b) {
  if (b < a) a = b;
}
template <class T>
inline void checkmax(T &a, const T &b) {
  if (b > a) a = b;
}
const int inf = 1e9 + 10;
const int maxn = 110;
long long dp[maxn][10], k;
int n, ans[maxn];
long long add(long long &a, long long b) { a += b; }
long long getdp() {
  for (int i = 0; i < maxn; i++)
    for (int t = 0; t < 8; t++) dp[i][t] = 0;
  dp[0][0] = 1;
  for (int i = 0; i < (n + 1) / 2; i++)
    for (int t = 0; t < 8; t++) {
      if (dp[i][t] == 0) continue;
      if (i + 1 == (n + 1) / 2 && n % 2 != 0) {
        vector<int> v;
        if (ans[i] == -1)
          v.push_back(0), v.push_back(1);
        else
          v.push_back(ans[i]);
        for (int c = 0; c < v.size(); c++) {
          int a = v[c];
          if (a == 0) {
            add(dp[i + 1][t | 3], dp[i][t]);
          } else if (a == 1 && ((t & 3) == 3)) {
            add(dp[i + 1][t], dp[i][t]);
          }
        }
        continue;
      }
      vector<int> v[2];
      if (ans[i] == -1)
        v[0].push_back(0), v[0].push_back(1);
      else
        v[0].push_back(ans[i]);
      if (ans[n - 1 - i] == -1)
        v[1].push_back(0), v[1].push_back(1);
      else
        v[1].push_back(ans[n - 1 - i]);
      for (int c1 = 0; c1 < v[0].size(); c1++)
        for (int c2 = 0; c2 < v[1].size(); c2++) {
          int a = v[0][c1], b = v[1][c2];
          if (a == 0 && b == 1) {
            add(dp[i + 1][t | 6], dp[i][t]);
          }
          if (a == 1 && b == 0 && ((t & 6) == 6)) {
            add(dp[i + 1][t], dp[i][t]);
          }
          if (a == 0 && b == 0) {
            add(dp[i + 1][t | 3], dp[i][t]);
          }
          if (a == 1 && b == 1 && ((t & 3) == 3)) {
            add(dp[i + 1][t], dp[i][t]);
          }
        }
    }
  long long res = 0;
  for (int t = 0; t < 8; t++) res += dp[(n + 1) / 2][t];
  return res;
}
int main() {
  for (int i = 0; i < maxn; i++) ans[i] = -1;
  scanf("%d%lld", &n, &k);
  long long tot = getdp() - 1;
  if (k > tot) {
    printf("-1\n");
    return 0;
  }
  k += 1;
  for (int i = 0; i < n; i++) {
    ans[i] = 0;
    if (k <= getdp()) continue;
    k -= getdp();
    ans[i] = 1;
  }
  for (int i = 0; i < n; i++) printf("%d", ans[i]);
  printf("\n");
  return 0;
}
