#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > ans;
void _div(int l, int r) {
  if (l >= r) return;
  if (r - l == 1) {
    ans.push_back(pair<int, int>(l, r));
    return;
  }
  int mid = l + r >> 1;
  _div(l, mid);
  _div(mid + 1, r);
  for (int i = l; i <= mid; i++) ans.push_back(pair<int, int>(i, r - (i - l)));
}
int main() {
  ios::sync_with_stdio(false);
  int n;
  cin >> n;
  int k = pow(2, (int)log2(n));
  _div(1, k);
  _div(n - k + 1, n);
  for (int i = 1; i <= n - k; i++) ans.push_back(pair<int, int>(i, i + k));
  cout << ans.size() << '\n';
  for (int i = 0; i < ans.size(); i++)
    cout << ans[i].first << ' ' << ans[i].second << '\n';
}
