#include <bits/stdc++.h>
using namespace std;
const int EN = 1000000 + 10;
struct Edge {
  int u, v;
} edge[EN];
int m;
void addEdge(int u, int v) {
  edge[m].u = u;
  edge[m++].v = v;
}
void buildMap(int n, int k) {
  addEdge(n - 1, n - 2);
  addEdge(2 * n - 1, 2 * n - 2);
  for (int i = 1; i <= n - 3; i++) {
    addEdge(n, i);
    addEdge(2 * n, n + i);
    addEdge(n - 1, i);
    addEdge(2 * n - 1, n + i);
    addEdge(n - 2, i);
    addEdge(2 * n - 2, n + i);
  }
  for (int i = 1; i <= n - 3; i++) {
    int j;
    if (i % 2)
      j = i + 2;
    else
      j = i + 1;
    while (j <= n - 3) {
      addEdge(i, j);
      addEdge(n + i, n + j);
      j++;
    }
  }
  addEdge(n, 2 * n);
}
void outMap(int n) {
  printf("%d %d\n", n, m);
  for (int i = 0; i < m; i++) {
    printf("%d %d\n", edge[i].u, edge[i].v);
  }
}
int main() {
  int k, n;
  scanf("%d", &k);
  if ((k & 1) == 0) {
    printf("NO\n");
  } else {
    if (k == 1) {
      printf("YES\n");
      printf("2 1\n");
      printf("1 2\n");
    } else {
      printf("YES\n");
      m = 0;
      n = 2 * (k + 2);
      buildMap(k + 2, k);
      outMap(n);
    }
  }
  return 0;
}
