#include using namespace std; #define rep(i, n) for(long long i=0;i<(long long)(n);i++) #define REP(i,k,n) for(long long i=k;i<(long long)(n);i++) #define all(a) a.begin(),a.end() #define rsort(a) {sort(all(a));reverse(all(a));} #define pb emplace_back #define lb(v,k) (lower_bound(all(v),(k))-v.begin()) #define fi first #define se second #define dupli(a) {sort(all(a));a.erase(unique(all(a)),a.end());} #define dame(a) {cout< P; typedef tuple PP; typedef tuple PPP; using vi=vector; using vvi=vector; using vvvi=vector; using vvvvi=vector; using vp=vector

; using vvp=vector; using vvvp=vector; using vb=vector; using vvb=vector; template bool chmin(T&a,T b){if(a>b){a=b;return true;}return false;} template bool chmax(T&a,T b){if(a void out(T a){cout< void outp(T a){cout<<'('< void outvp(T v){rep(i,v.size())cout<<'('< void outvvp(T v){rep(i,v.size())outvp(v[i]);} template void outv(T v){rep(i,v.size()){if(i)cout<<' ';cout< void outvv(T v){rep(i,v.size())outv(v[i]);} const ll inf=1001001001001001001; vi scc(vvi&g,ll&number_of_components){ ll n=g.size(); number_of_components=0; vvi rg(n);rep(i,n)for(ll x:g[i])rg[x].pb(i); vi topo,res(n); vb visited(n,false); function dfs=[&](ll i,ll md){ visited[i]=true; if(md==0){ for(ll x:g[i])if(!visited[x])dfs(x,md); topo.pb(i); } else{ for(ll x:rg[i])if(!visited[x])dfs(x,md); res[i]=number_of_components; } }; rep(i,n)if(!visited[i])dfs(i,0); reverse(all(topo)); rep(i,n)visited[i]=false; for(ll i:topo)if(!visited[i]){ dfs(i,1); number_of_components++; } return res; } int main(){ ll n,m;cin>>n>>m; vp v(n);rep(i,n)cin>>v[i].fi>>v[i].se; vvi g(n*2); auto rev=[&](P p){ return P(m-1-p.se,m-1-p.fi); }; auto no=[&](P a,P b){ if(a.se