#include <bits/stdc++.h>
#pragma comment(linker, "/stack:102400000,102400000")
using namespace std;
long long gcd(long long a, long long b) {
  if (a < b) swap(a, b);
  while (a % b != 0) {
    int temp = a % b;
    a = b;
    b = temp;
  }
  return b;
}
int main() {
  int n, m;
  while (scanf("%d%d", &n, &m) != EOF) {
    if (n == 1 && m == 1)
      printf("1\n");
    else if (n == 1) {
      long long a = 1;
      long long t = (m - 1) * a;
      while ((t % 2) || ((t / 2) % 2) || (t == 4)) a *= 2, t *= 4;
      long long x = (t / 2 - 2) / 2;
      for (int i = 1; i < m; i++) {
        printf("%I64d ", a);
      }
      printf("%I64d\n", x);
    } else if (m == 1) {
      long long a = 1;
      long long t = (n - 1) * a;
      while ((t % 2) || ((t / 2) % 2) || (t == 4)) a *= 2, t *= 4;
      long long x = (t / 2 - 2) / 2;
      for (int i = 1; i < n; i++) {
        printf("%I64d\n", a);
      }
      printf("%I64d\n", x);
    } else {
      long long a = 1;
      long long t = (m - 1) * a;
      while ((t % 2) || ((t / 2) % 2) || (t == 4)) a *= 2, t *= 4;
      long long x = (t / 2 - 2) / 2;
      t = (n - 1) * a * a;
      while ((t % 2) || ((t / 2) % 2) || (t == 4)) a *= 2, x *= 2, t *= 4;
      long long b = (t / 2 - 2) / 2;
      long long g = gcd(a, b);
      long long y = b * x / g;
      long long temp = a / g;
      a = temp * a;
      b = temp * b;
      x = temp * x;
      for (int i = 1; i < n; i++) {
        for (int j = 1; j < m; j++) {
          printf("%I64d ", a);
        }
        printf("%I64d\n", x);
      }
      for (int i = 1; i < m; i++) {
        printf("%I64d ", b);
      }
      printf("%I64d\n", y);
    }
  }
  return 0;
}
