#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
struct node {
  int to, next, w, c;
} a[N * 20];
int n, m, tot = 1, s, t, cnt, ans;
int p[110][110], c[110][110], ls[N], f[N], mf[N], pre[N];
bool v[N];
queue<int> q;
void addl(int x, int y, int w, int c) {
  a[++tot].to = y;
  a[tot].next = ls[x];
  ls[x] = tot;
  a[tot].w = w;
  a[tot].c = c;
  a[++tot].to = x;
  a[tot].next = ls[y];
  ls[y] = tot;
  a[tot].w = 0;
  a[tot].c = -c;
  return;
}
bool SPFA() {
  memset(f, 0x3f, sizeof(f));
  q.push(s);
  f[s] = 0;
  v[s] = 1;
  mf[s] = 1e9;
  while (!q.empty()) {
    int x = q.front();
    q.pop();
    v[x] = 0;
    for (int i = ls[x]; i; i = a[i].next) {
      int y = a[i].to;
      if (a[i].w && f[x] + a[i].c < f[y]) {
        f[y] = f[x] + a[i].c;
        pre[y] = i;
        mf[y] = min(mf[x], a[i].w);
        if (!v[y]) v[y] = 1, q.push(y);
      }
    }
  }
  return f[t] <= 2147483647 / 3;
}
void Updata() {
  int x = t;
  ans += mf[t] * f[t];
  while (x != s) {
    a[pre[x]].w -= mf[t];
    a[pre[x] ^ 1].w += mf[t];
    x = a[pre[x] ^ 1].to;
  }
  return;
}
int main() {
  scanf("%d%d", &n, &m);
  s = 1;
  t = 2;
  cnt = n + 2;
  for (int i = 3; i <= n + 2; i++)
    for (int j = 0; j < n; j++) addl(i, t, 1, j);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
      if (i != j) c[i][j] = 2;
  for (int i = 1; i <= m; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    c[x][y] = 1;
    c[y][x] = 0;
  }
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++) {
      int x = c[i][j];
      p[i][j] = ++cnt;
      if (i >= j) continue;
      addl(s, cnt, 1, 0);
      if (x == 0 || x == 2) addl(cnt, j + 2, 1, 0);
      if (x == 1 || x == 2) addl(cnt, i + 2, 1, 0);
    }
  while (SPFA()) Updata();
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++) {
      if (c[i][j] != 2 || i >= j) continue;
      int x = p[i][j];
      if (a[ls[x]].w)
        c[i][j] = 0, c[j][i] = 1;
      else
        c[i][j] = 1, c[j][i] = 0;
    }
  for (int i = 1; i <= n; i++, putchar('\n'))
    for (int j = 1; j <= n; j++) printf("%d", c[i][j]);
  return 0;
}
