#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1000000000")
using namespace std;
const int MAXN = 1001;
int b[MAXN];
void pt(int x, int y) {
  cout << x << " " << y << "\n";
  swap(b[x], b[y]);
}
void go(int x) {
  if (x <= 1) return;
  int y = x - 4;
  for (int i = 1; i <= y; i++) pt(i, y + 1);
  pt(y + 1, y + 2);
  for (int i = y; i >= 1; i--) pt(i, y + 2);
  pt(y + 2, y + 3);
  pt(y + 1, y + 4);
  pt(y + 2, y + 4);
  pt(y + 1, y + 3);
  for (int i = 1; i <= y; i++) pt(i, y + 3);
  pt(y + 3, y + 4);
  for (int i = y; i >= 1; i--) pt(i, y + 4);
  go(y);
}
int main() {
  ios_base::sync_with_stdio(0);
  cout.setf(ios::fixed);
  cout.precision(20);
  int n;
  cin >> n;
  if (((n * (n - 1)) / 2) & 1) {
    cout << "NO\n";
    return 0;
  }
  cout << "YES\n";
  for (int i = 1; i <= n; i++) b[i] = i;
  go(n);
  for (int i = 1; i <= n; i++) assert(b[i] == i);
  return 0;
}
