#include <bits/stdc++.h>
using namespace std;
template <class T>
void initvv(vector<vector<T> > &v, int a, int b, const T &t = T()) {
  v.assign(a, vector<T>(b, t));
}
template <class F, class T>
void convert(const F &f, T &t) {
  stringstream ss;
  ss << f;
  ss >> t;
}
static const int INF = 1 << 24;
void mainmain() {
  int n;
  cin >> n;
  if (n & 1)
    ;
  else {
    puts("NO");
    return;
  }
  puts("YES");
  if (n == 1) {
    cout << 2 << " " << 1 << endl;
    cout << 1 << " " << 2 << endl;
    return;
  }
  int pp = n + 2;
  int t = n - 1;
  if (n != 3)
    cout << pp * 2 << " "
         << 1 + 2 * (2 * (n - 1) + 1 + (n - 1) + t / 2 + t * (t - 3) / 2)
         << endl;
  else
    cout << pp * 2 << " "
         << 1 + 2 * (2 * (n - 1) + 1 + (n - 1) + t / 2 + t * (t - 3) / 2)
         << endl;
  for (int(o) = (0); (o) < ((2)); ++(o)) {
    vector<int> v(n - 1);
    for (int(i) = (0); (i) < ((n - 1)); ++(i)) v[i] = i + 2 + o * pp;
    vector<int> w(2);
    for (int(i) = (0); (i) < ((2)); ++(i)) w[i] = o * pp + n + 1 + i;
    for (int(i) = (0); (i) < ((2)); ++(i)) {
      for (int(j) = (0); (j) < ((n - 1)); ++(j)) {
        cout << w[i] << " " << v[j] << endl;
      }
    }
    cout << w[0] << " " << w[1] << endl;
    for (int(i) = (0); (i) < ((n - 1)); ++(i)) {
      cout << 1 + o * pp << " " << v[i] << endl;
    }
    for (int(i) = (0); (i) < ((n - 1)); ++(i)) {
      for (int(j) = (0); (j) < ((n - 1)); ++(j)) {
        if (i <= j) continue;
        if (abs(i - j) == 1) continue;
        if (i == n - 2 && j == 0) continue;
        cout << v[i] << " " << v[j] << endl;
      }
    }
    if (n != 3)
      for (int(i) = (0); (i) < ((n - 1)); ++(i)) {
        if (i & 1) continue;
        cout << v[i] << " " << v[i + 1] << endl;
      }
  }
  cout << 1 << " " << pp + 1 << endl;
}
signed main() { mainmain(); }
