#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define REP(i,m,n) for(int i=(int)(m) ; i < (int) (n) ; ++i ) #define rep(i,n) REP(i,0,n) using ll = long long; const int inf=1e9+7; const ll longinf=1LL<<60 ; const ll mod=1e9+7 ; long long N; vector to[200005]; int ki[200005]; int main(){ int n, m; cin >> n >> m; m-=(n-1); set> ans; if(m<0){ cout << "NO" << endl; return 0; } for(int i=1; i<=n-1; i++){ ans.insert({i, i+1}); } if(m>0){ rep(i, n){ rep(j, n){ if(i%2!=j%2 && !ans.count({i+1, j+1}) && i0){ cout << "NO" << endl; return 0; } int a[n]; rep(i, n){ if(i%2==0) a[i] = (i/2)+1; else a[i] = (n+1)/2 + i/2 + 1; } cout << "YES" << endl; rep(i, n){ cout << a[i] << " "; } cout << endl; for(auto k: ans){ cout << k.first << " " << k.second << endl; } }