#include using namespace std; using ll = long long; using ull = unsigned long long; using ld = long double; using pii = pair; using pll = pair; using vll = vector; const ll INF = LLONG_MAX / 4; bool chmin(auto& a, const auto& b) { return a > b ? a = b, 1 : 0; } bool chmax(auto& a, const auto& b) { return a < b ? a = b, 1 : 0; } auto sz(const auto& a) { return ssize(a); } #define OVERLOAD_REP(a, b, c, d, name, ...) name #define rep(...) OVERLOAD_REP(__VA_ARGS__, REP3, REP2, REP1, REP0)(__VA_ARGS__) #define REP0(x) for (ll _rep_counter = 0; _rep_counter < (x); ++_rep_counter) #define REP1(i, x) for (ll i = 0; (i) < (x); ++(i)) #define REP2(i, l, r) for (ll i = (l); (i) < (r); ++(i)) #define REP3(i, l, r, c) for (ll i = (l); ((c) > 0 ? (i) < (r) : (i) > (r)); i += (c)) #define each(x,a) for (auto&& x : a) #define MOD 998244353 #define ll0 ((ll)0) void solve() { ll n; cin >> n; ll a = n * (n+1) / 2; ll sum = 0; rep(i, n) { sum += (i+1 + (i+2)%3)/3; } if(sum <= (a-sum)/2) { rep(i, n) { rep(j, i+1) { if((j-3+i)%3 == 0) cout << 2 << " \n"[j==i]; else cout << 1 << " \n"[j==i]; } } } else { rep(i, n) { rep(j, i+1) { if((j-3+i+1) % 3 == 0) cout << 2 << " \n"[j==i]; else cout << 1 << " \n"[j==i]; } } } } int main() { cin.tie(nullptr); ios_base::sync_with_stdio(false); solve(); }