Let s be some string consisting of symbols "0" or "1". Let's call a string t a substring of string s, if there exists such number 1 ≤ l ≤ |s| - |t| + 1 that t = s_l s_{l+1} … s_{l + |t| - 1}. Let's call a substring t of string s unique, if there exist only one such l. 

For example, let s = "1010111". A string t = "010" is an unique substring of s, because l = 2 is the only one suitable number. But, for example t = "10" isn't a unique substring of s, because l = 1 and l = 3 are suitable. And for example t ="00" at all isn't a substring of s, because there is no suitable l.

Today Vasya solved the following problem at the informatics lesson: given a string consisting of symbols "0" and "1", the task is to find the length of its minimal unique substring. He has written a solution to this problem and wants to test it. He is asking you to help him.

You are given 2 positive integers n and k, such that (n mod 2) = (k mod 2), where (x mod 2) is operation of taking remainder of x by dividing on 2. Find any string s consisting of n symbols "0" or "1", such that the length of its minimal unique substring is equal to k.

Input

The first line contains two integers n and k, separated by spaces (1 ≤ k ≤ n ≤ 100 000, (k mod 2) = (n mod 2)).

Output

Print a string s of length n, consisting of symbols "0" and "1". Minimal length of the unique substring of s should be equal to k. You can find any suitable string. It is guaranteed, that there exists at least one such string.

Examples

Input


4 4


Output


1111

Input


5 3


Output


01010

Input


7 3


Output


1011011

Note

In the first test, it's easy to see, that the only unique substring of string s = "1111" is all string s, which has length 4.

In the second test a string s = "01010" has minimal unique substring t ="101", which has length 3.

In the third test a string s = "1011011" has minimal unique substring t ="110", which has length 3.
#include <bits/stdc++.h>
using namespace std;
default_random_engine generator;
uniform_int_distribution<int> distribution(1, INT_MAX);
vector<vector<long long> > one(int sz) {
  vector<vector<long long> > ret;
  ret.resize(sz);
  for (int i = 0; i < ret.size(); i++) {
    ret[i].resize(sz);
    for (int j = 0; j < ret.size(); j++) {
      ret[i][j] = (i == j);
    }
  }
  return ret;
}
vector<vector<long long> > mult(vector<vector<long long> > a,
                                vector<vector<long long> > b) {
  vector<vector<long long> > ret;
  ret.resize(a.size());
  for (int i = 0; i < ret.size(); i++) {
    ret[i].resize(a.size());
    for (int j = 0; j < ret.size(); j++) {
      ret[i][j] = 0;
    }
  }
  for (int k = 0; k < ret.size(); k++) {
    for (int i = 0; i < a.size(); i++) {
      for (int j = 0; j < b.size(); j++) {
        ret[i][j] = (ret[i][j] + a[i][k] * b[k][j]);
        ret[i][j] %= 998244353;
      }
    }
  }
  return ret;
}
vector<vector<long long> > pw(vector<vector<long long> > a, long long b) {
  if (b == 0) return one((int)a.size());
  if (b % 2) return mult(a, pw(a, b - 1));
  return pw(mult(a, a), b / 2);
}
long long my_rand(long long a = 0, long long b = INT_MAX) {
  return a + distribution(generator) % b;
}
inline int mul(int a, int b) { return int(a * 1ll * b % 998244353); }
inline int norm(int a) {
  if (a >= 998244353) a -= 998244353;
  if (a < 0) a += 998244353;
  return a;
}
inline int binPow(int a, int k) {
  int ans = 1;
  while (k > 0) {
    if (k & 1) ans = mul(ans, a);
    a = mul(a, a);
    k >>= 1;
  }
  return ans;
}
inline int subtract(int a, int b) { return norm(a - b); }
inline int sum(int a, int b) { return int((a + b) % 998244353); }
inline int inv(int a) { return binPow(a, 998244353 - 2); }
long long ceil_int(long long a, long long b) { return a / b + (a % b != 0); }
long long gcd(long long a, long long b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
long long lcm(long long a, long long b) { return (a * b) / gcd(a, b); }
int main() {
  generator.seed(chrono::system_clock::now().time_since_epoch().count());
  cin.sync_with_stdio(false);
  cin.tie(0);
  int n, k;
  cin >> n >> k;
  int cnt = (n - k) / 2;
  string s;
  for (int i = 0; i < cnt; i++) {
    s += '1';
  }
  s += '0';
  for (int i = 0; i < n; i++) {
    cout << s[i % (cnt + 1)];
  }
  return 0;
}
