#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
long long mul(long long a, long long b) { return (a * b) % (1000000007); }
long long add(long long a, long long b) { return (a + b) % (1000000007); }
long long sub(long long a, long long b) {
  return ((a - b) % (1000000007) + (1000000007)) % (1000000007);
}
void upd(long long &a, long long b) {
  a = (a % (1000000007) + b % (1000000007)) % (1000000007);
}
int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
vector<pair<int, int> > v;
void print(int i, int j) {
  printf("%d %d\n", i + 1, j + 1);
  printf("%d %d\n", i + 3, j + 1);
  printf("%d %d\n", i + 2, j + 2);
  printf("%d %d\n", i + 3, j + 2);
  printf("%d %d\n", i + 1, j + 3);
  printf("%d %d\n", i + 2, j + 1);
  printf("%d %d\n", i + 0, j + 0);
  printf("%d %d\n", i + 0, j + 3);
  printf("%d %d\n", i + 1, j + 0);
  printf("%d %d\n", i + 2, j + 3);
  printf("%d %d\n", i + 3, j + 0);
  printf("%d %d\n", i + 1, j + 2);
  printf("%d %d\n", i + 0, j + 1);
  printf("%d %d\n", i + 0, j + 2);
  printf("%d %d\n", i + 2, j + 0);
  printf("%d %d\n", i + 3, j + 3);
}
int main() {
  int n = read();
  if (n % 4 > 1)
    puts("NO");
  else {
    puts("YES");
    for (int i = 1; i <= n / 4 * 4; i += 4)
      for (int j = i + 4; j <= n / 4 * 4; j += 4) {
        print(i, j);
      }
    for (int i = 1; i <= n / 4 * 4; i += 4) {
      if (n % 4)
        printf("%d %d\n%d %d\n%d %d\n", i + 2, n, i + 2, i + 3, i + 3, n);
      else
        printf("%d %d\n", i + 2, i + 3);
      printf("%d %d\n", i, i + 2);
      printf("%d %d\n", i + 1, i + 3);
      printf("%d %d\n", i + 1, i + 2);
      printf("%d %d\n", i, i + 3);
      if (n % 4)
        printf("%d %d\n%d %d\n%d %d\n", i, n, i, i + 1, i + 1, n);
      else
        printf("%d %d\n", i, i + 1);
    }
  }
  return 0;
}
