#include <bits/stdc++.h>
using namespace std;
const long long INF = (1ll << 60);
const int N = 205;
int n, m, _len;
int nxt[N];
long long k;
long long ADD(long long x, long long y) { return min(INF, x + y); }
struct node {
  char pref[N];
  char suff[N];
  long long len;
  long long sum;
} t[N * 4], eddd;
char s[N * 4];
char ans[N];
node operator+(node a, node b) {
  node ans;
  ans.len = ADD(a.len, b.len);
  ans.sum = ADD(a.sum, b.sum);
  int l1 = min(a.len, 2ll * _len);
  int l2 = min(b.len, 2ll * _len);
  for (int i = (int)(1); i <= (int)(min(l1, _len)); i++) s[i] = a.pref[i];
  for (int i = (int)(1); i <= (int)(min(l1, _len)); i++)
    s[l1 - i + 1] = a.suff[i];
  for (int i = (int)(1); i <= (int)(min(l2, _len)); i++) s[l1 + i] = b.pref[i];
  for (int i = (int)(1); i <= (int)(min(l2, _len)); i++)
    s[l1 + l2 - i + 1] = b.suff[i];
  int p = 0;
  s[l1 + l2 + 1] = 0;
  for (int i = (int)(l1 - min(l1, _len - 1) + 1);
       i <= (int)(l1 + 1 + min(l2, _len - 1) - 1); i++) {
    for (; p && s[i] != ::ans[p + 1]; p = nxt[p])
      ;
    if (s[i] == ::ans[p + 1]) ++p;
    if (p == _len) ++ans.sum, p = nxt[p];
  }
  for (int i = (int)(1); i <= (int)(min(_len, l1 + l2)); i++)
    ans.pref[i] = s[i];
  for (int i = (int)(1); i <= (int)(min(_len, l1 + l2)); i++)
    ans.suff[i] = s[l1 + l2 - i + 1];
  return ans;
}
long long count(int l) {
  _len = l;
  nxt[1] = 0;
  for (int i = (int)(2); i <= (int)(l); i++) {
    int j = nxt[i - 1];
    for (; j && ans[j + 1] != ans[i]; j = nxt[j])
      ;
    nxt[i] = j + (ans[j + 1] == ans[i]);
  }
  t[0].pref[1] = t[0].suff[1] = '0';
  t[1].pref[1] = t[1].suff[1] = '1';
  eddd.pref[1] = eddd.suff[1] = '2';
  t[0].len = t[1].len = eddd.len = 1;
  t[0].sum = (l == 1 && ans[1] == '0');
  t[1].sum = (l == 1 && ans[1] == '1');
  eddd.sum = (l == 1 && ans[1] == '2');
  for (int i = (int)(2); i <= (int)(n); i++) {
    t[i] = t[i - 2] + t[i - 1];
  }
  return (t[n] + eddd).sum;
}
int main() {
  scanf("%d%lld%d", &n, &k, &m);
  k++;
  for (int i = (int)(1); i <= (int)(m); i++) {
    ans[i] = '2';
    long long val = count(i);
    if (val >= k) break;
    k -= val;
    ans[i] = '0';
    val = count(i);
    if (val >= k) {
      putchar('0');
      continue;
    }
    k -= val;
    ans[i] = '1';
    val = count(i);
    if (val >= k) {
      putchar('1');
      continue;
    }
    assert(0);
  }
}
