#include <bits/stdc++.h>
using namespace std;
int c3[100010], c2[1010];
int graph[110][110];
int main() {
  ios ::sync_with_stdio(0);
  cin.tie(0);
  memset(graph, 0, sizeof graph);
  for (int i = (3), _b = (100); i <= _b; ++i) {
    c3[i] = (i * (i - 1) * (i - 2)) / 6;
  }
  for (int i = (2), _b = (100); i <= _b; ++i) {
    c2[i] = (i * (i - 1)) / 2;
  }
  int k, esco;
  cin >> k;
  for (int i = (100), _b = (3); i >= _b; --i) {
    if (k >= c3[i]) {
      k -= c3[i];
      esco = i;
      break;
    }
  }
  for (int i = 0; i < (int)(esco); ++i) {
    for (int j = 0; j < (int)(esco); ++j) {
      if (i != j) graph[i][j] = graph[j][i] = 1;
    }
  }
  int fixo = esco;
  while (k > 0) {
    int cont = 0;
    for (int i = (fixo), _b = (2); i >= _b; --i) {
      cont = i;
      if (k >= c2[i]) break;
    }
    for (int i = 0; i < (int)(cont); ++i) graph[i][esco] = graph[esco][i] = 1;
    k -= c2[cont];
    esco++;
  }
  cout << esco << endl;
  for (int i = 0; i < (int)(esco); ++i) {
    for (int j = 0; j < (int)(esco); ++j) {
      cout << graph[i][j] << "";
    }
    cout << endl;
  }
}
