#include <bits/stdc++.h>
using namespace std;
vector<int> a;
vector<pair<int, int> > matches;
vector<pair<int, int> > ans;
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int k;
  cin >> k;
  if (k % 2 == 0) {
    cout << "NO";
    return 0;
  }
  ans.push_back({1, 2});
  int cur_node = 3;
  for (int i = 0; i < k - 1; i++) {
    a.push_back(cur_node);
    ans.push_back({1, cur_node});
    cur_node++;
  }
  int l = cur_node;
  for (int i : a) {
    for (int j = 0; j < k - 1; j++) {
      ans.push_back({i, cur_node});
      cur_node++;
    }
  }
  int r = cur_node - 1;
  for (int i = 1; i <= (k - 1) / 2; i++) {
    for (int j = l; j <= r; j++) {
      if (i + j > r) {
        ans.push_back({j, i + j - r + l - 1});
      } else {
        ans.push_back({j, i + j});
      }
    }
  }
  a.clear();
  for (int i = 0; i < k - 1; i++) {
    a.push_back(cur_node);
    ans.push_back({2, cur_node});
    cur_node++;
  }
  l = cur_node;
  for (int i : a) {
    for (int j = 0; j < k - 1; j++) {
      ans.push_back({i, cur_node});
      cur_node++;
    }
  }
  r = cur_node - 1;
  for (int i = 1; i <= (k - 1) / 2; i++) {
    for (int j = l; j <= r; j++) {
      if (i + j > r) {
        ans.push_back({j, i + j - r + l - 1});
      } else {
        ans.push_back({j, i + j});
      }
    }
  }
  cout << "YES" << endl;
  cout << cur_node - 1 << " " << ans.size() << endl;
  for (auto i : ans) cout << i.first << " " << i.second << "\n";
  return 0;
}
