#include using namespace std; using ll = long long; const ll linf=(1LL<<60) - 1; const int inf=(1LL<<30) - 1; const int mod=1000000007; const int MOD=998244353; const ll dx[] = {1, 0, -1, 0, 1, 1, -1, -1}; const ll dy[] = {0, 1, 0, -1, 1, -1, 1, -1}; #define overload4(a,b,c,d,name,...) name #define rep1(n) for(long long _=0;_ name(__VA_ARGS__) #define vv(type,name,h,...) vector name(h,vector(__VA_ARGS__)) #define vvv(type,name,h,w,...) vector name(h,vector(w,vector(__VA_ARGS__))) #define vvvv(type, name, h, w, n, ...) vector>>> name(h, vector>>(w, vector>(n, vector(__VA_ARGS__)))) struct Setting{ Setting(){ cin.tie(nullptr)->sync_with_stdio(0); fixed(cout).precision(12); } }Setting; // #define _GLIBCXX_DEBUG //----------------------------------- void solve() { int N; cin >> N; int t = N % 4; if(t==1 || t==2){ cout << -1 << endl; }else{ if(t==0){ rep(i, 1, N+1){ int r = i % 4; if(r == 2 || r == 3) { cout << 1; }else{ cout << 0; } } }else{ rep(i, 1, N+1){ int r = i % 4; if(r == 1 || r == 2){ cout << 1; }else{ cout << 0; } } } cout << endl; } } int main() { int T = 1; cin >> T; while(T--) solve(); }