#include using namespace std; typedef long long ll; typedef pair p_ll; template void debug(T itr1, T itr2) { auto now = itr1; while(now=0; i--) #define popcount __builtin_popcount const ll LLINF = pow(2,61)-1; const ll INF = pow(2,30)-1; ll gcd(ll a, ll b) { if (a> N >> M; ll cnt[N] = {}; rep(i,N) rep(j,N) cnt[i] += popcount((i+1)*(j+1))%2==0; // debug(cnt,cnt+N); ll sum = 0; rep(i,N) sum += cnt[i]; vector> dp(N+1, vector(sum+1,-1)); dp[0][0] = 0; rep(i,N) rep(j,sum+1) { dp[i+1][j] = dp[i][j]; if (j>=cnt[i]&&dp[i][j-cnt[i]]!=-1&&dp[i+1][j]==-1) dp[i+1][j] = i; } // rep(i,N+1) debug(all(dp[i])); if (sum%2!=M%2||sum X, Y; per(i,N) { if (dp[i+1][cx]==i) { cx -= cnt[i]; X.push_back(i+1); } else Y.push_back(i+1); } cout << X.size() << " " << Y.size() << endl; debug(all(X)); debug(all(Y)); return 0; }