#include <bits/stdc++.h>
using namespace std;
inline long long in() {
  int32_t x;
  scanf("%d", &x);
  return x;
}
inline string getStr() {
  char ch[1001];
  scanf("%s", ch);
  return ch;
}
inline char getCh() {
  char ch;
  scanf(" %c", &ch);
  return ch;
}
template <class P, class Q>
inline P smin(P &a, Q b) {
  if (b < a) a = b;
  return a;
}
template <class P, class Q>
inline P smax(P &a, Q b) {
  if (a < b) a = b;
  return a;
}
const long long MOD = 1e9 + 7;
const long long MAX_N = 1e3 + 10;
const long long MAX_LG = 21;
const long long base = 29;
const long long MAX_DIF = 5005;
long long c[MAX_N][2];
inline void build(long long n, long long tp) {
  if (n == 1)
    c[0][tp] = 1;
  else if (n == 2)
    c[0][tp] = 3, c[1][tp] = 4;
  else if (n % 2 == 0) {
    for (long long i = 0; i + 1 < n; i++) c[i][tp] = 1;
    c[n - 1][tp] = (n - 2) / 2;
  } else {
    c[0][tp] = 2;
    for (long long i = 1; i + 1 < n; i++) c[i][tp] = 1;
    c[n - 1][tp] = (n + 1) / 2;
  }
}
int32_t main() {
  long long n = in(), m = in();
  build(n, 1), build(m, 0);
  for (long long i = 0; i < n; i++) {
    for (long long j = 0; j < m; j++) cout << c[j][0] * c[i][1] << " ";
    cout << "\n";
  }
}
