// Problem: C. Minimum Ties
// Contest: Codeforces - Educational Codeforces Round 104 (Rated for Div. 2)
// URL: https://codeforces.com/contest/1487/problem/C
// Memory Limit: 256 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<vector<int>> vvi;
typedef vector<vector<ll>> vvll;
constexpr ll INF=0x3f3f3f3f3f3f3f3f;
#define pb push_back
#define eb emplace_back
using namespace std::placeholders;
template<class T>
struct opt{
	bool ini;T _a;
	opt():ini(false){}
	opt(const T &a):ini(true),_a(a){}
	opt(const opt &o):ini(o.ini){if (ini) _a=o._a;}
	operator T(){return _a;}
	void reset(){ini=false;}
	operator bool(){return ini;}
	T& operator->(){return _a;}
	T& operator*(){return _a;}
};

template<class TT,class T=typename decay<TT>::type>
opt<T> mkopt(TT &&a){return opt<T>(a);}
template<class T>
opt<T> mkopt(){return opt<T>();}

template<size_t s>
struct bset:public bitset<s>{
	using bitset<s>::bitset;
	constexpr const static size_t max=1<<s;
	template<class T,typename enable_if<is_integral<T>::value,int>::type=0>
	operator T(){return T(bitset<s>::to_ullong());}
};

template<class T>
auto _format(ostream &os,const char *c,T&& cv)->decltype(os<<cv,c+1){
	if (*++c=='.') os << setprecision(*++c-'0'+1);
	os << cv;
	while (*c!='}') c++;
	return c+1;
}
template<class T>
auto _format(ostream &os,const char *c,T&& cv)->decltype(begin(cv),c+1){
	const char *ct=c+1;
	for (auto &i:cv){
		const char *cc=c+1;
		while (*cc!='{') os << *cc++;
		cc=_format(os,cc,i);
		while (*cc!='}') os << *cc++;
		ct=cc;
	}
	return ct+1;
}
string format(const char *c){return string(c);}
template<class T,class ...Args>
string format(const char *c,const T &a,Args&& ...rest){
	ostringstream os;
	while (*c!='{'&&*c!='\0') os<< *c++;
	if (*c=='{') c=_format(os,c,a);
	return os.str()+format(c,forward<Args>(rest)...);
} 
template<class T>
T gi(istream &is=cin){T a;is>>a;return a;}
ll gi(istream &is=cin){
    ll i=0;bool f=false;char c;
    while (!isdigit(c=is.get())&&is.good()) f=c=='-';
    if (!is.good()) return 0;
    do i=(i<<3)+(i<<1)+c-'0'; while (isdigit(c=is.get()));
    return f?-i:i;
}
template<class vT>
vector<vT> ga(int n,istream &is=cin){
	vector<vT> a(n);
	for (int i=0;i<n;i++) 
		a[i]=gi<vT>(is);
	return a;
}
template<class T1,class T2>
bool cmin(T1 &a,const T2 b){return a>b?a=b,1:0;}
template<class T1,class T2>
bool cmax(T1 &a,const T2 b){return a<b?a=b,1:0;}
template<class T1,class T2,class ...T3>
bool cmin(T1 &a,const T2 b,const T3 ...rest){return cmin(a,b)|cmin(a,rest...);}
template<class T1,class T2,class ...T3>
bool cmax(T1 &a,const T2 b,const T3 ...rest){return cmax(a,b)|cmax(a,rest...);}
int gcd(int a,int b){
	return b?gcd(b,a%b):a;
}
struct solution{
	int n;
	int a[110][110];
	solution(){
		n=gi();
		memset(a,0,sizeof(a));
	}
	int g(int a,int b){
		if (a>b) a-=b;
		return a;
	}
	void solve(){
		if (n==2){
			cout << "0" << endl;
			return;
		}
		for (int k=1;k<n/2+(n&1);k++){
			int o=n/gcd(n,k);
			//cerr << format("{} {} {}\n",n,o,k);
			for (int ii=1;ii*o<=n;ii++){
				int i=ii;
				do{
					int ni=g(i+k,n);
					a[i][ni]=1;
					a[ni][i]=-1;
					i=ni;
				}while (i!=ii);
			}
		}
		for (int i=1;i<=n;i++)
			for (int j=i+1;j<=n;j++){
				cout << a[i][j] << " ";
			}
		cout << endl;
	} 
};

int main(){
	ios::sync_with_stdio(false);
	int T=gi();
	while (T--&&cin.good()){
		unique_ptr<solution>(new solution())->solve();
	}
}