#include #include #include #include #define maxn 100005 using namespace std; int t; char inp[maxn]; int sum[3][maxn]; int num[maxn]; bool jh(int a, int b, int modes, int eq) { if(a < 0) a = 0; if(a > b) return false; if(b - a >= modes - 1) return true; for(int i = a; i <= b; i++) if(i % modes == eq) return true; return false; } bool judge(int a, int b, int c, int k, int l) { bool ans; if(a + b + c < k) return false; if(!a) ans = jh(max(k - l, 2 * k - l - b), min(2 * k - l, k - l + c), 3, 0); else if(!b) if(l & 1) ans = jh(2 * k - 2 * a - l, min(2 * c - l, 2 * k - l), 6, 3); else ans = jh(2 * k - 2 * a - l, min(2 * c - l, 2 * k - l), 6, 0); else if(!c) ans = jh(k - a - l, min(b - l, k - l), 3, 0); else if(k) if(a + b + c - 1 >= k) ans = true; else ans = ((b + 2 * c) % 3 == l); else if(!l) ans = true; else ans = false; // cout<<"ju"<= k + 2) break; if(num[j] == 0) continue; if(judge(sum[0][n] - sum[0][j], sum[1][n] - sum[1][j], sum[2][n] - sum[2][j], k - sum[0][j - 1] - sum[1][j - 1] - sum[2][j - 1], (2 * sum[1][j - 1] + sum[2][j - 1] + asum) % 3)) flag = true;//, cout<<"pl"<