#include <bits/stdc++.h>
using namespace std;
const int N = 35100;
const int INF = 1000000000;
int a[110], b[110], n, m;
bool check(int y) {
  a[1] = b[1] = y;
  long long s1 = 1LL * y * y, s2 = 1LL * y * y;
  for (int i = 2; i <= n - 2; i++) {
    a[i] = 1;
    s1++;
  }
  for (int i = 2; i <= m - 2; i++) {
    b[i] = 1;
    s2++;
  }
  if (n > 2) {
    for (int x = 1; x <= 100000000; x++) {
      long long t1 = s1 + 1LL * x * x;
      if ((t1 % 2 == 1 && t1 != 1) || (t1 % 4 == 0 && t1 != 4)) {
        a[n - 1] = x;
        s1 = t1;
        break;
      }
    }
  }
  if (m > 2) {
    for (int x = 1; x <= 100000000; x++) {
      long long t2 = s2 + 1LL * x * x;
      if ((t2 % 2 == 1 && t2 != 1) || (t2 % 4 == 0 && t2 != 4)) {
        b[m - 1] = x;
        s2 = t2;
        break;
      }
    }
  }
  if (n > 1 && (s1 % 2 != 1 || s1 == 1) && (s1 % 4 != 0 || s1 == 4))
    return false;
  if (m > 1 && (s2 % 2 != 1 || s2 == 1) && (s2 % 4 != 0 || s2 == 4))
    return false;
  if (n > 1) {
    if (s1 % 2 == 1) {
      a[n] = (s1 - 1) / 2;
    } else {
      a[n] = (s1 / 2 - 2) / 2;
    }
  }
  if (m > 1) {
    if (s2 % 2 == 1) {
      b[m] = (s2 - 1) / 2;
    } else {
      b[m] = (s2 / 2 - 2) / 2;
    }
  }
  return true;
}
int main() {
  cin >> n >> m;
  for (int y = 1; y <= 100000000; y++) {
    if (check(y)) break;
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      printf("%d ", a[i] * b[j]);
    }
    puts("");
  }
  return 0;
}
