#include using namespace std; #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() #define pb push_back #define ppb pop_back typedef long long ll; typedef pair pii; typedef vector vi; typedef pair pl; typedef vector vl; typedef vector vvl; #define rep2(i, n) for (ll i = 0; i < (n); ++i) #define rep3(i, a, b) for (ll i = (a); i < (b); ++i) #define rep_select(_1, _2, _3, name, ...) name #define rep(...) rep_select(__VA_ARGS__, rep3, rep2)(__VA_ARGS__) #define rrep2(i, n) for (ll i = (ll)(n) - 1; i >= 0; --i) #define rrep3(i, a, b) for (ll i = (ll)(b) - 1; i >= (ll)(a); --i) #define rrep(...) rep_select(__VA_ARGS__, rrep3, rrep2)(__VA_ARGS__) vector>> ans(505); ll n; ll id(pl p){ return p.first*n+p.second; } int main() { cin >> n; if(n<=3){ cout << -1 << endl; return 0; } ans[4]={{{0,0},{1,0}},{{1,0},{2,0}},{{2,0},{3,0}},{{3,0},{3,1}},{{3,1},{3,2}},{{3,2},{2,2}},{{2,2},{2,3}},{{2,1},{1,1}},{{1,1},{0,1}},{{0,1},{0,2}},{{0,3},{0,2}},{{0,3},{1,3}},{{1,3},{2,3}},{{2,3},{3,3}}}; ans[5]={{{0,0},{0,1}},{{0,1},{0,2}},{{0,0},{1,0}},{{1,0},{1,1}},{{1,1},{1,2}},{{1,2},{2,2}},{{2,1},{2,2}},{{2,1},{3,1}},{{2,2},{3,2}},{{3,2},{3,3}},{{3,3},{3,4}},{{3,4},{4,4}},{{2,0},{3,0}},{{3,0},{4,0}},{{4,0},{4,1}},{{4,1},{4,2}},{{4,2},{4,3}},{{3,3},{4,3}},{{2,3},{3,3}},{{2,3},{2,4}},{{1,4},{2,4}},{{0,4},{1,4}},{{0,3},{0,4}},{{0,3},{1,3}}}; if(n%2==0){ for(ll i=4;i<=500;i+=2){ for(auto [p,q]:ans[i]){ auto [a,b]=q; auto [c,d]=q; ans[i+2].pb({{a+2,b+2},{c+2,d+2}}); } if(i%4==0){ rep(j,i){ ans[i+2].pb({{0,j},{0,j+1}}); ans[i+2].pb({{i+1,j+1},{i+1,j+2}}); } rep(j,i+1){ ans[i+2].pb({{j,0},{j+1,0}}); ans[i+2].pb({{j,i+1},{j+1,i+1}}); } ans[i+2].pb({{0,i},{1,i}}); ans[i+2].pb({{i,1},{i+1,1}}); } else{ rep(j,i){ ans[i+2].pb({{0,j+1},{0,j+2}}); ans[i+2].pb({{i+1,j},{i+1,j+1}}); } rep(j,i+1){ ans[i+2].pb({{j,0},{j+1,0}}); ans[i+2].pb({{j,i+1},{j+1,i+1}}); } ans[i+2].pb({{0,1},{1,1}}); ans[i+2].pb({{i,i},{i+1,i}}); } } } else{ for(ll i=5;i<=500;i+=2){ for(auto [p,q]:ans[i]){ auto [a,b]=q; auto [c,d]=q; ans[i+2].pb({{a+2,b+2},{c+2,d+2}}); } if(i%4==1){ rep(j,i){ ans[i+2].pb({{0,j},{0,j+1}}); ans[i+2].pb({{i+1,j+1},{i+1,j+2}}); } rep(j,i+1){ ans[i+2].pb({{j,0},{j+1,0}}); ans[i+2].pb({{j,i+1},{j+1,i+1}}); } ans[i+2].pb({{0,i},{1,i}}); ans[i+2].pb({{i,1},{i+1,1}}); } else{ rep(j,i){ ans[i+2].pb({{0,j+1},{0,j+2}}); ans[i+2].pb({{i+1,j},{i+1,j+1}}); } rep(j,i+1){ ans[i+2].pb({{j,0},{j+1,0}}); ans[i+2].pb({{j,i+1},{j+1,i+1}}); } ans[i+2].pb({{0,1},{1,1}}); ans[i+2].pb({{i,i},{i+1,i}}); } } } for(auto [x,y]:ans[n]){ cout << id(x) << " " << id(y) << endl; } }