#include <bits/stdc++.h>
using namespace std;
int need, e;
int mat[128][128];
bool found;
int add;
int v;
int main() {
  memset(mat, 0, sizeof mat);
  cin >> need;
  e = 0;
  while (e < need) {
    found = false;
    for (int i = 1; i <= v && found == false; i++)
      for (int j = i + 1; j <= v && found == false; j++) {
        if (mat[i][j] == 1) continue;
        add = 0;
        for (int k = 1; k <= v; k++) {
          if (k == i || k == j) continue;
          if (mat[i][k] && mat[k][j]) add++;
        }
        if (e + add <= need) {
          found = true;
          e += add;
          mat[i][j] = 1;
          mat[j][i] = 1;
        }
      }
    if (found == false) v++;
  }
  cout << v << endl;
  for (int i = 1; i <= v; i++) {
    for (int j = 1; j <= v; j++) cout << mat[i][j];
    cout << endl;
  }
  return 0;
}
