#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void read(T& num) {
  bool start = false, neg = false;
  char c;
  num = 0;
  while ((c = getchar()) != EOF) {
    if (c == '-')
      start = neg = true;
    else if (c >= '0' && c <= '9') {
      start = true;
      num = num * 10 + c - '0';
    } else if (start)
      break;
  }
  if (neg) num = -num;
}
const int maxn = 1005;
int li[maxn * maxn];
int ri[maxn * maxn];
int idx;
inline void S(int l, int r) {
  ++idx;
  li[idx] = l;
  ri[idx] = r;
}
int main() {
  int n;
  read(n);
  if (n % 4 != 0 && (n - 1) % 4 != 0) {
    printf("NO\n");
    return 0;
  }
  int M = n;
  if (M % 4 != 0) M--;
  printf("YES\n");
  for (int i = 0; i < M; i += 4) {
    if (n != M) S(i + 1, n);
    S(i + 1, i + 2);
    if (n != M) S(i + 2, n);
    if (n != M) S(i + 3, n);
    S(i + 3, i + 4);
    if (n != M) S(i + 4, n);
    S(i + 2, i + 3);
    S(i + 1, i + 4);
    S(i + 1, i + 3);
    S(i + 2, i + 4);
  }
  for (int i = 0; i < M; i += 4) {
    for (int j = i + 4; j < M; j += 4) {
      S(i + 1, j + 1);
      S(i + 2, j + 2);
      S(i + 3, j + 3);
      S(i + 4, j + 4);
      S(i + 1, j + 2);
      S(i + 2, j + 1);
      S(i + 3, j + 4);
      S(i + 4, j + 3);
      S(i + 2, j + 3);
      S(i + 3, j + 2);
      S(i + 1, j + 4);
      S(i + 4, j + 1);
      S(i + 1, j + 3);
      S(i + 3, j + 1);
      S(i + 2, j + 4);
      S(i + 4, j + 2);
    }
  }
  for (int i = (1); i <= (idx); i++) printf("%d %d\n", li[i], ri[i]);
  return 0;
}
