//#ifdef DEBUG
//#define _GLIBCXX_DEBUG
//#endif
//#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
typedef long double ld;
typedef long long ll;
const int maxN = 1005;
int dist[maxN][maxN];
int a[maxN];
int b[maxN];
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    //freopen("input.txt", "r", stdin);
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
//        int ni = i;
//        if (i & (1 << r)) ni -= (1 << r);
        a[i] = (2 * i) % n;
        b[i] = (2 * i + 1) % n;
        a[i] = max(a[i], 0);
        a[i] = min(a[i], n - 1);
        b[i] = max(b[i], 0);
        b[i] = min(b[i], n - 1);
    }
//    for (int i = 0; i < n; i++) {
//        for (int j = 0; j < n; j++) {
//            dist[i][j] = 500;
//        }
//        dist[i][i] = 0;
//        if (i != a[i]) dist[i][a[i]] = 1;
//        if (i != b[i]) dist[i][b[i]] = 1;
//    }
//    for (int k = 0; k < n; k++) {
//        for (int i = 0; i < n; i++) {
//            for (int j = 0; j < n; j++) {
//                dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);
//            }
//        }
//    }
    for (int i = 0; i < n; i++) {
        cout << a[i] + 1 << " " << b[i] + 1 << '\n';
    }

    return 0;
}
#include <bits/stdc++.h>

using namespace std;

#define ll long long

struct A {
    int id;
    int l, r;
    A(int id) : id(id) {
        l = r = 0;
    }
};

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);

    int n;
    cin >> n;
    vector<A> v;
    for (int i = 1; i <= n; ++i) {
        v.push_back(A(i));
        if (i * 2 <= n) v.back().l = 2 * i;
        if (i * 2 + 1 <= n) v.back().r = 2 * i + 1;
    }
    reverse(v.begin(), v.end());
    for (int i = 0; i < n; ++i) {
        if (v[i].r == 0 && 2 * i + 2 < n) v[i].r = v[2 * i + 2].id;
        if (v[i].l == 0 && 2 * i + 1 < n) v[i].l = v[2 * i + 1].id;
    }
    reverse(v.begin(), v.end());
    for (auto& x : v) {
        if (x.l == 0) x.l = 1;
        if (x.r == 0) x.r = n;
        cout << x.l << ' ' << x.r << '\n';
    }
}