#include <bits/stdc++.h>
using ll = long long;
template <class t, class u, class... w>
auto operator<<(t& o, u a) -> decltype(a.print(a), o) {
  return o << "{", a.print(), o << "}";
}
using namespace std;
void DD(...) {}
using Pii = pair<int, int>;
template <class t, class u, class... w>
void DD(t s, u a, w... k) {
  while (*s && *s != ',') cerr << *s++;
  cerr << ": " << a << *s++;
  DD(s, k...);
}
template <class t, class u, class... w>
auto operator<<(t& o, u a) -> decltype((a).begin(), (a).end(), o) {
  return o << "[",
         [&]() {
           for (auto i : a) o << i << ", ";
         }(),
         o << "]";
}
using Vi = vector<int>;
template <class t, class u, class... w>
auto operator<<(t& o, u a) -> decltype(get<1>(a), o) {
  return o << "(" << a.first << ", " << a.second << ")";
}
Vi getTable(int n) {
  if (n == 1) {
    return {1};
  }
  if (n == 2) {
    return {3, 4};
  }
  Vi ret(n, 1);
  if (n % 2) {
    ret.back() = (n + 1) / 2;
    ret[0] = 2;
  } else {
    ret.back() = (n - 2) / 2;
  }
  return ret;
}
int main() {
  cin.sync_with_stdio(0);
  cin.tie(0);
  cout << fixed << setprecision(10);
  int n, m;
  cin >> n >> m;
  Vi ver = getTable(n), hor = getTable(m);
  for (int second = (0); second < (n); second++) {
    for (int first = (0); first < (m); first++) {
      cout << ver[second] * hor[first] << " ";
    }
    cout << endl;
  }
  return 0;
}
