#pragma GCC optimize("O3,unroll-loops")
#include <bits/stdc++.h>
using namespace std;
#define name "aaaaaa"
#define endl "\n"
#define fi first
#define se second
using ll = long long;
using db = double;
using ld = long double;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using ppii = pair<int, pii>;
using vi = vector<int>;
using vll = vector<ll>;
using vd = vector<double>;
using pdb = pair<db, db>;

int n, x;

map<set<int>, int> mp;

void backtrack(int id, vector<int> v, int lst, int sum = 0){
    if(id >= 1){
        if(sum - v[0] > x) return;
    }
    if(id >= 1){
        set<int> s;
        bool ck = true;
        for(int i : v){
            if(sum - i < 1 || sum - i > x) ck = false;
            s.insert(sum - i);
        }
        if(ck && s.size() == n){
            mp[s] = true;
        }
    }
    if(id == x + 1) return;
    for(int i = lst; i <= x; i++){
        v.push_back(i);
        backtrack(id + 1, v, i, sum + i);
        v.pop_back();
    }
}

int gay(int n2, int x2){
    n = n2, x = x2;
    mp.clear();
    vector<int> empt;
    backtrack(0, empt, 1);
    return mp.size();
}

void solve(){
    for(int i = 1; i <= 10; i++){
        for(int j = 1; j <= 30; j++){
            cout << gay(i, j) << ' ';
        }
        cout << endl;
    }
}

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    if(fopen(name".inp", "r")) {
        freopen(name".inp", "r", stdin);
        freopen(name".out", "w", stdout);
    }

    int test = 1;
    //cin >> test;
    while(test--){
        solve();
    }
}
