#include <bits/stdc++.h>
using namespace std;
int K;
int N = 0, M = 0;
const int NMAX = 1000006;
vector<int> G[NMAX];
int opposite(int x) {
  x += (K + 1) / 2;
  if (x > K + 1) x -= K + 1;
  return x;
}
void Build() {
  for (int i = 1; i <= K + 1; i++) {
    for (int j = i + 1; j <= K + 1; j++) {
      if (opposite(i) == j) continue;
      G[N + i].push_back(N + j);
      M++;
    }
  }
  for (int i = 2; i <= K + 1; i++) {
    G[N + i].push_back(N + K + 2);
    M++;
  }
  N += K + 2;
}
int main() {
  cin >> K;
  if (K % 2 == 0) {
    cout << "NO\n";
    return 0;
  } else {
    cout << "YES\n";
    if (K == 1) {
      cout << "2 1\n1 2\n";
      return 0;
    }
  }
  int L1 = 1;
  Build();
  int L2 = N + 1;
  Build();
  G[L1].push_back(L2);
  M++;
  cout << N << " " << M << "\n";
  for (int i = 1; i <= N; i++) {
    for (int j = 0; j < G[i].size(); j++) {
      cout << i << " " << G[i][j] << "\n";
    }
  }
  return 0;
}
