#include using namespace std; using Edge = array; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N; cin >> N; if (N <= 3) { cout << -1 << '\n'; return 0; } int n = N % 2 ? 5 : 4; vector h, v; if (n == 4) { h = {"#.#", "##.", ".##", "#.#"}; v = {"#.##", ".#..", "##.#"}; } else { h = {"####", "#.##", "###.", ".###", "####"}; v = {".#..#", "#...#", "#...#", "#...."}; } vector ans; auto add = [&](int r, int c, int nr, int nc) { ans.push_back({r, c, nr, nc}); }; for (int r = 0; r < n; ++r) for (int c = 0; c + 1 < n; ++c) if (h[r][c] == '#') add(r, c, r, c + 1); for (int r = 0; r + 1 < n; ++r) for (int c = 0; c < n; ++c) if (v[r][c] == '#') add(r, c, r + 1, c); while (n < N) { for (auto& e : ans) { e[0] += 2; e[2] += 2; e[1] = n + 1 - e[1]; e[3] = n + 1 - e[3]; } n += 2; for (int r = 0; r + 1 < n; ++r) add(r, 0, r + 1, 0); add(n - 1, 0, n - 1, 1); for (int r = n - 1; r > 2; --r) add(r, 1, r - 1, 1); add(2, 1, 2, 2); add(1, 1, 0, 1); for (int c = 1; c + 1 < n; ++c) add(0, c, 0, c + 1); add(0, n - 1, 1, n - 1); for (int c = n - 1; c > 2; --c) add(1, c, 1, c - 1); add(1, 2, 2, 2); } for (auto [r, c, nr, nc] : ans) cout << r * N + c + 1 << ' ' << nr * N + nc + 1 << '\n'; }