#include <bits/stdc++.h>
using namespace std;
const int N = 110;
int a[N][N], n, m, raw[N], cul[N];
bool check(int x) {
  int c = int(sqrt(double(x)));
  while ((c + 1) * (c + 1) <= x) c++;
  return c * c == x;
}
void build(int *C, int n) {
  if (n == 2) {
    C[0] = 3;
    C[1] = 4;
  } else if (n == 1) {
    C[0] = 1;
  } else if (n & 1) {
    int cnt = 0;
    for (int i = 0; i < n - 2; i++) {
      C[i] = 1;
      cnt++;
    }
    C[n - 2] = 2;
    cnt += 4;
    int val = 1;
    while (!check(cnt + val * val)) val++;
    C[n - 1] = val;
  } else {
    int cnt = 0;
    for (int i = 0; i < n - 1; i++) {
      C[i] = 1;
      cnt++;
    }
    int val = 1;
    while (!check(cnt + val * val)) val++;
    C[n - 1] = val;
  }
}
int main() {
  scanf("%d%d", &n, &m);
  build(cul, n);
  build(raw, m);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      a[i][j] = cul[i] * raw[j];
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      printf("%d%c", a[i][j], " \n"[j == m - 1]);
    }
  }
  return 0;
}
