#include <bits/stdc++.h>
using namespace std;
long long n, k, pre, tmp;
void print(long long x, int len) {
  stack<int> a;
  while (x) {
    if (x % 2)
      a.push(1);
    else
      a.push(0);
    x /= 2;
  }
  for (int i = 0; i < len - a.size(); i++) cout << 0;
  while (!a.empty()) {
    cout << a.top();
    a.pop();
  }
}
long long inv(long long x, int len) {
  long long rtn = 0;
  for (int i = 0; i < len; i++) {
    rtn <<= 1;
    rtn = rtn | (x & 1);
    x >>= 1;
  }
  return rtn;
}
int main() {
  cin >> n >> k;
  k++;
  tmp = 1 << (n / 2);
  if (n % 2) {
    while (k > tmp) {
      k -= tmp;
      tmp -= 1;
      pre++;
      if (tmp < 0) {
        cout << -1 << endl;
        return 0;
      }
    }
    print(pre, n / 2 + 1);
  } else {
    while (k > tmp) {
      k -= tmp;
      tmp -= 2;
      pre++;
      if (tmp < 0) {
        cout << -1 << endl;
        return 0;
      }
    }
    print(pre, n / 2);
  }
  long long sup = (1 << (n / 2 - 1)) - 1 + tmp / 2, inf = sup - tmp + 1;
  for (int i = 0; i < (1 << (n / 2)); i++) {
    long long invi = inv(i, n / 2);
    if (invi >= inf && invi <= sup) {
      k--;
      if (k == 0) {
        print(i, n / 2);
        break;
      }
    }
  }
  return 0;
}
