#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
set<int> dp[10001];
int sq[10001];
int par[200][105];
int n, m;
int a[105][105];
void solve() {
  int val = 0;
  for (val = 0; par[val * val][n] == -1; val++)
    ;
  val *= val;
  for (int i = n; i > 0; i--) {
    int d = par[val][i];
    for (int j = 0; j < m; j++) {
      a[i - 1][j] = d;
    }
    val -= d * d;
  }
  for (val = 0; par[val * val][m] == -1; val++)
    ;
  val *= val;
  for (int j = m; j > 0; j--) {
    int d = par[val][j];
    for (int i = 0; i < n; i++) {
      a[i][j - 1] *= d;
    }
    val -= d * d;
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      cout << a[i][j] << ' ';
    }
    cout << '\n';
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  for (int i = 1; i * i <= 10000; i++) {
    sq[i * i] = true;
  }
  memset(par, -1, sizeof(par));
  dp[0].insert(0);
  for (int i = 1; i <= 200; i++) {
    for (int j = 1; j * j <= i; j++) {
      int u = i - j * j;
      for (set<int>::iterator it = dp[u].begin(); it != dp[u].end(); it++) {
        int curr = (*it) + 1;
        if (curr <= 100) {
          dp[i].insert(curr);
          par[i][curr] = j;
        }
      }
    }
  }
  while (cin >> n >> m) {
    solve();
  }
}
