#include <bits/stdc++.h>
using namespace std;
int main() {
  cin.tie(0)->sync_with_stdio(0);
  cin.exceptions(ios::badbit | ios::failbit);
  int n, m;
  cin >> n >> m;
  vector<int> x(n), y(m);
  if (n == 1) {
    x = {1};
  } else if (n == 2) {
    x = {3, 4};
  } else if (n & 1) {
    fill(x.begin(), x.end(), 2);
    x[n - 1] = n - 2;
  } else {
    fill(x.begin(), x.end(), 1);
    x[n - 1] = (n - 2) / 2;
  }
  if (m == 1) {
    y = {1};
  } else if (m == 2) {
    y = {3, 4};
  } else if (m & 1) {
    fill(y.begin(), y.end(), 2);
    y[m - 1] = m - 2;
  } else {
    fill(y.begin(), y.end(), 1);
    y[m - 1] = (m - 2) / 2;
  }
  42;
  42;
  vector<vector<int>> res(n, vector<int>(m));
  for (auto i = 0; i < n; ++i) {
    for (auto j = 0; j < m; ++j) {
      res[i][j] = x[i] * y[j];
    }
  }
  vector<long long> rsum(n), csum(m);
  for (auto i = 0; i < n; ++i) {
    for (auto j = 0; j < m; ++j) {
      cout << res[i][j] << " ";
      rsum[i] += 1LL * res[i][j] * res[i][j];
      csum[j] += 1LL * res[i][j] * res[i][j];
    }
    cout << "\n";
  }
  for (auto i = 0; i < n; ++i) {
    long long x = sqrt(rsum[i] - 1);
    while ((x + 1) * (x + 1) <= rsum[i]) {
      ++x;
    }
    assert(x * x == rsum[i]);
  }
  for (auto i = 0; i < m; ++i) {
    long long x = sqrt(csum[i] - 1);
    while ((x + 1) * (x + 1) <= csum[i]) {
      ++x;
    }
    assert(x * x == csum[i]);
  }
  return 0;
}
