QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#589645 | #8338. Quad Kingdoms Chess | DBsoleil | TL | 643ms | 17376kb | C++20 | 3.7kb | 2024-09-25 19:19:05 | 2024-09-25 19:19:07 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
static constexpr int Maxn = 1e5 + 5, SqrN = 405, MaxB = 1205;
static constexpr uint64_t MOD1 = 1e9 + 9, MOD2 = 1e9 + 7;
static constexpr uint64_t BASE1 = 1e5 + 3, BASE2 = 1e5 + 19;
using hash_t = pair<uint64_t, uint64_t>;
hash_t operator + (hash_t lhs, int v)
{ return hash_t((lhs.first * BASE1 + v) % MOD1, (lhs.second * BASE2 + v) % MOD2); }
hash_t operator + (hash_t lhs, hash_t rhs)
{ return hash_t((lhs.first + rhs.first) % MOD1, (lhs.second + rhs.second) % MOD2); }
hash_t operator * (hash_t lhs, hash_t rhs)
{ return hash_t(lhs.first * rhs.first % MOD1, lhs.second * rhs.second % MOD2); }
const hash_t BASE = hash_t(BASE1, BASE2);
hash_t pw[Maxn];
using data_t = pair<int, hash_t>;
data_t operator + (data_t lhs, data_t rhs) {
if (lhs.first == 0) return rhs;
return data_t(lhs.first + rhs.first, hash_t(lhs.second * pw[rhs.first] + rhs.second));
} data_t New(uint64_t v) { return data_t(1, hash_t(v, v)); }
struct Array {
int n, bn, bs, a[Maxn];
int bel[Maxn], bL[Maxn], bR[Maxn];
data_t h[Maxn];
bool upd[Maxn];
vector<pair<int, data_t>> hv[MaxB];
void rebuild(int b) {
int l = bL[b], r = bR[b];
for (int i = l; i <= r; ++i) upd[i] = false;
h[l] = New(a[l]); upd[l] = true;
for (int i = l + 1, p = l; i <= r; ++i)
if (a[i] >= a[p])
h[i] = h[p] + New(a[i]), p = i, upd[i] = true;
else h[i] = h[i - 1];
hv[b].clear();
hash_t cur = {0, 0};
int len = 0;
for (int i = r; i >= l; --i)
if (upd[i]) {
(cur.first += pw[len].first * a[i]) %= MOD1;
(cur.second += pw[len].second * a[i]) %= MOD2;
++len;
hv[b].emplace_back(a[i], data_t(len, cur));
}
reverse(hv[b].begin(), hv[b].end());
} // Array::rebuild
data_t qblock(int b, data_t res, int &pre) {
int l = bL[b], r = bR[b];
auto it = lower_bound(hv[b].begin(), hv[b].end(), pair(pre, data_t()));
// fprintf(stderr, "l = %d, r = %d, it = %d\n", l, r, it - hv[b].begin());
// fprintf(stderr, "|hv[%d]| = %d\n", b, (int)hv[b].size()); fflush(stderr);
if (it == hv[b].end()) return res;
pre = hv[b].back().first;
// fprintf(stderr, "pre = %d\n", pre);
res = res + it->second;
return res;
} // qblock
data_t query(void) {
data_t res = h[bR[1]];
int cur = hv[1].back().first;
// fprintf(stderr, "cur = %d\n", cur);
for (int i = 2; i <= bn; ++i)
res = qblock(i, res, cur);
return res;
} // Array::query
void input(void) {
scanf("%d", &n); bs = min(1000, n);
for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
reverse(a + 1, a + n + 1);
for (int i = 1; i <= n; ++i) bel[i] = (i - 1) / bs + 1;
bn = bel[n];
for (int i = 1; i <= bn; ++i) {
bL[i] = (i - 1) * bs + 1;
bR[i] = min(i * bs, n);
}
for (int i = 1; i <= bn; ++i) rebuild(i);
} // Array::input
void update(int x, int y) {
x = n - x + 1, a[x] = y;
rebuild(bel[x]);
} // update
} a[3];
int main(void) {
pw[0] = {1, 1};
for (int i = 1; i < Maxn; ++i)
pw[i] = pw[i - 1] * hash_t(BASE1, BASE2);
a[1].input(); a[2].input();
int qn; scanf("%d", &qn);
while (qn--) {
int op, x, y;
scanf("%d%d%d", &op, &x, &y);
// fprintf(stderr, "------------------------- %d, %d, %d\n", op, x, y); fflush(stderr);
a[op].update(x, y);
// fprintf(stderr, "update success!\n");
auto a1 = a[1].query(), a2 = a[2].query();
// fprintf(stderr, "a1 = (%d, (%lu, %lu))\n", a1.first, a1.second.first, a1.second.second);
// fprintf(stderr, "a2 = (%d, (%lu, %lu))\n", a2.first, a2.second.first, a2.second.second);
if (a1 != a2) printf("NO\n");
else printf("YES\n");
}
return 0;
} // main
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 16600kb
input:
5 1 2 3 4 5 5 5 4 3 2 1 8 1 1 5 1 4 2 1 2 4 1 5 1 1 5 5 2 1 4 2 3 5 2 5 5
output:
NO NO NO YES NO NO NO YES
result:
ok 8 tokens
Test #2:
score: 0
Accepted
time: 27ms
memory: 16584kb
input:
1 2 6 2 1 1 1 1 1 200000 2 6 2 1 1 1 1 1 1 1 1 2 2 1 1 1 1 2 1 1 1 2 4 1 2 1 2 1 1 1 1 1 2 2 5 1 1 1 1 1 1 2 1 1 1 2 6 1 1 1 2 1 1 2 1 1 2 2 3 1 1 1 1 2 1 1 2 6 2 1 1 2 2 4 1 1 1 2 2 6 1 1 1 2 1 1 1 2 5 2 2 6 2 1 1 1 2 4 2 2 5 2 2 6 2 1 1 1 2 5 1 2 6 2 1 1 2 1 1 1 1 1 1 2 4 1 1 1 2 1 1 2 1 1 2 2 3 2...
output:
NO NO NO NO YES YES NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO YES YES YES NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO YES YES YES NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO N...
result:
ok 200000 tokens
Test #3:
score: 0
Accepted
time: 31ms
memory: 15920kb
input:
6 2 1 1 2 1 2 1 1 200000 2 1 1 1 1 2 1 1 1 2 1 2 2 1 1 2 1 1 2 1 2 2 1 2 1 1 2 1 3 1 1 6 2 1 5 2 1 4 2 1 3 1 2 1 2 1 4 2 1 4 2 2 1 2 2 1 2 1 3 1 1 6 1 1 1 2 2 1 1 1 6 1 1 3 1 1 5 2 1 6 2 1 5 2 2 1 2 1 2 1 1 5 2 2 1 1 2 1 1 1 6 1 2 1 2 2 1 1 1 3 2 2 1 1 1 6 1 1 4 2 1 2 1 1 1 1 2 1 1 1 2 1 1 6 2 1 6 2...
output:
NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO ...
result:
ok 200000 tokens
Test #4:
score: 0
Accepted
time: 38ms
memory: 16524kb
input:
6 1 3 1 2 1 2 6 2 1 3 3 3 1 200000 2 4 2 1 2 1 1 6 2 2 3 2 1 1 1 1 6 2 1 6 2 1 3 2 2 6 1 2 4 3 1 1 2 2 5 2 2 6 2 2 3 1 1 4 3 1 3 1 2 5 2 2 4 2 2 1 3 1 1 1 2 2 2 2 4 2 1 5 3 1 6 3 2 6 3 1 5 3 2 5 3 2 4 1 2 4 2 1 1 2 1 6 1 2 6 1 1 2 3 1 1 3 1 1 1 2 6 3 2 4 1 1 4 2 2 2 1 1 3 1 1 1 3 1 1 3 1 4 3 1 3 3 2...
output:
NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO YES YES YES YES NO YES NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO N...
result:
ok 200000 tokens
Test #5:
score: 0
Accepted
time: 34ms
memory: 16532kb
input:
4 1 1 2 2 1 1 200000 2 1 2 1 1 3 1 2 1 2 1 2 2 1 2 2 1 3 2 1 1 2 1 1 1 4 2 2 1 3 1 3 1 1 2 1 1 3 2 2 1 1 1 4 2 2 1 1 2 1 2 1 1 1 2 1 2 2 1 1 1 4 1 1 2 2 2 1 1 1 1 1 1 4 3 2 1 3 1 1 3 2 1 2 1 2 1 2 1 1 2 1 1 2 1 1 2 1 3 2 1 2 1 2 3 2 1 3 1 3 3 2 1 1 1 2 3 2 1 2 1 1 2 2 1 2 2 1 3 1 2 1 1 4 3 2 1 2 2 1...
output:
NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO YES NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO YES NO NO NO NO YES NO NO NO NO YES YES NO NO NO NO NO NO NO NO NO N...
result:
ok 200000 tokens
Test #6:
score: 0
Accepted
time: 31ms
memory: 15892kb
input:
2 4 2 4 2 3 3 2 200000 1 1 2 1 2 2 1 2 2 1 2 4 1 1 2 1 2 4 2 2 1 1 1 3 2 3 2 2 3 1 2 2 4 2 3 2 2 2 1 1 1 4 1 2 4 2 2 1 1 1 2 2 1 2 2 4 4 1 2 4 1 2 3 2 4 4 2 3 1 2 1 3 2 3 1 2 2 1 1 1 2 2 2 1 1 2 3 1 2 2 1 2 1 1 2 4 1 2 4 1 1 3 1 1 4 2 1 3 1 1 1 1 2 4 2 1 2 2 3 4 1 2 4 2 2 1 1 2 1 2 3 2 1 2 3 2 3 3 1...
output:
NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO YES YES NO NO NO NO NO NO NO NO NO NO NO YES YES YES NO NO YES YES YES NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO N...
result:
ok 200000 tokens
Test #7:
score: 0
Accepted
time: 34ms
memory: 16280kb
input:
7 3 3 4 1 1 3 3 5 3 3 2 1 4 200000 2 2 1 2 2 1 2 5 1 1 6 1 1 5 2 2 1 4 1 4 2 1 6 4 1 7 1 1 2 3 2 5 1 2 5 4 1 6 2 1 5 2 1 4 1 1 2 1 2 2 2 1 3 4 1 7 2 1 6 3 2 5 1 1 5 1 1 7 3 2 1 3 2 3 1 1 3 2 2 2 2 1 7 4 2 1 4 1 3 2 1 1 2 1 5 3 1 5 3 2 2 2 1 5 3 2 5 3 2 3 2 1 1 3 1 2 2 2 2 1 2 1 4 2 1 2 1 3 4 2 1 1 1...
output:
NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO YES NO NO NO NO NO NO NO NO NO NO NO NO NO...
result:
ok 200000 tokens
Test #8:
score: 0
Accepted
time: 31ms
memory: 17336kb
input:
1 3 7 4 4 5 5 5 5 4 200000 2 2 4 2 6 4 1 1 4 2 6 4 2 1 3 2 2 3 2 1 3 1 1 5 1 1 5 2 3 5 1 1 4 1 1 4 2 6 5 2 5 1 2 1 2 2 7 2 1 1 5 2 4 5 1 1 2 1 1 3 2 4 2 2 1 3 1 1 3 2 1 1 1 1 1 2 3 1 1 1 4 1 1 5 1 1 1 2 5 2 2 7 3 1 1 5 2 6 4 1 1 4 2 7 4 2 3 3 2 3 1 1 1 3 1 1 3 2 4 4 1 1 4 1 1 2 1 1 1 2 3 1 2 1 1 1 1...
output:
NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO ...
result:
ok 200000 tokens
Test #9:
score: 0
Accepted
time: 35ms
memory: 17252kb
input:
8 3 1 2 2 1 4 4 4 3 1 4 4 200000 1 2 1 1 5 1 2 1 1 2 1 1 2 2 2 2 3 1 1 5 5 1 6 2 1 2 5 1 3 1 1 5 1 2 1 5 2 1 2 1 4 4 2 3 3 1 4 3 2 2 2 2 3 1 1 6 4 1 1 3 1 2 3 2 2 5 2 3 3 2 1 3 2 3 4 2 1 4 2 2 5 2 2 4 2 2 2 1 3 1 1 8 2 2 2 3 1 2 2 1 1 2 1 1 1 1 3 1 2 1 3 2 2 3 1 6 2 2 2 4 1 6 3 2 1 1 1 1 4 2 1 4 2 1...
output:
NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO YES NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO...
result:
ok 200000 tokens
Test #10:
score: 0
Accepted
time: 35ms
memory: 16456kb
input:
3 6 1 5 2 5 3 200000 1 2 4 1 1 3 1 2 5 2 2 5 1 3 3 1 1 6 1 3 1 1 2 1 2 1 6 2 1 4 2 1 2 2 2 3 1 3 1 1 3 5 1 2 4 2 2 5 1 2 5 1 3 1 2 1 3 1 2 6 1 2 4 2 1 3 1 2 4 1 2 1 1 3 2 2 2 6 2 1 4 2 2 4 1 1 2 1 1 4 2 2 2 2 1 4 1 2 2 1 1 3 2 1 4 1 3 3 2 1 6 2 2 2 1 1 6 1 3 6 1 2 2 1 3 1 2 2 3 1 2 2 2 1 2 2 2 5 2 2...
output:
NO NO NO YES NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO YES YES NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO YES NO NO NO NO NO NO YES YES NO NO NO NO NO NO NO NO NO YES NO NO NO NO NO NO NO NO NO NO NO...
result:
ok 200000 tokens
Test #11:
score: 0
Accepted
time: 28ms
memory: 17376kb
input:
3 1 1 6 5 2 3 4 4 6 200000 2 3 5 2 5 5 1 1 4 1 2 4 1 1 1 2 4 3 2 1 2 1 1 6 2 2 2 2 5 4 1 3 4 1 3 4 2 3 5 2 1 6 1 1 1 2 3 4 2 3 5 2 2 5 1 1 5 1 2 2 1 3 2 2 2 1 1 3 5 2 3 6 1 3 3 2 1 3 2 5 3 1 1 1 2 4 4 2 5 1 2 2 5 1 2 2 1 2 3 2 4 5 1 3 5 2 1 1 2 5 1 1 2 1 2 5 4 2 3 1 2 1 6 1 1 2 1 3 6 1 2 1 2 3 6 1 1...
output:
YES NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO YES YES YES NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO...
result:
ok 200000 tokens
Test #12:
score: 0
Accepted
time: 40ms
memory: 16340kb
input:
8 73198 31688 65092 21397 35031 58089 52944 16010 5 31090 97692 26708 44940 89767 200000 2 5 31191 1 1 60759 1 6 70508 1 2 97983 2 3 53563 1 4 22102 1 7 36211 1 3 33339 1 8 49224 1 7 82146 2 5 97668 1 4 13552 1 2 26414 2 4 3381 1 4 42198 1 4 28786 2 2 29892 2 2 77347 1 5 53766 2 5 55142 2 5 74266 1 ...
output:
NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO ...
result:
ok 200000 tokens
Test #13:
score: 0
Accepted
time: 638ms
memory: 16144kb
input:
100000 45952 97807 4941 35929 10776 28013 47912 21386 48030 55110 1347 96260 91732 78252 37717 2556 44017 67045 91588 59689 86623 88384 41158 38652 77627 83554 48557 85544 94827 54704 86949 61451 79790 92480 74798 43911 65450 20096 17129 95952 87522 98877 41827 51143 42419 98384 27210 34607 91233 46...
output:
NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO ...
result:
ok 200000 tokens
Test #14:
score: 0
Accepted
time: 636ms
memory: 16984kb
input:
99999 63127 96070 94785 89195 36543 10379 61583 85361 26575 9864 5151 96584 83262 87738 81493 77141 957 85599 81652 87068 4820 15001 46075 98990 61085 56983 57764 32157 77477 14215 30908 16088 14960 12782 94204 27770 46161 27063 96224 2650 24147 26074 38982 83573 17957 99486 59358 23283 57128 99050 ...
output:
NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO ...
result:
ok 200000 tokens
Test #15:
score: 0
Accepted
time: 643ms
memory: 16524kb
input:
100000 68214 14278 37605 60661 99170 80223 36766 31910 84546 73869 71165 34670 68418 70464 20442 58316 35031 88027 80204 79629 551 31609 19679 1212 38536 82523 35294 92345 88330 22996 51154 53211 29973 9721 49738 90623 48990 25469 71407 49128 535 8200 26661 15644 15135 25331 98894 41005 17663 39304 ...
output:
NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO ...
result:
ok 200000 tokens
Test #16:
score: 0
Accepted
time: 639ms
memory: 16456kb
input:
100000 57213 50345 68705 14599 49470 22513 27829 26899 22016 91370 45853 47295 22213 79723 29957 37376 12873 29410 6657 29667 3109 97902 38284 19827 48632 85126 91179 11224 55743 43474 82364 25854 56073 28625 54384 56394 71844 15498 33052 21358 88176 64296 93186 93622 49034 78502 62075 60918 78225 6...
output:
NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO ...
result:
ok 200000 tokens
Test #17:
score: -100
Time Limit Exceeded
input:
100000 5 10 10 8 10 10 9 10 6 7 10 5 10 7 7 10 1 10 10 10 2 5 10 8 10 5 10 9 10 10 10 2 10 4 10 7 7 10 9 9 3 6 10 2 10 9 6 6 10 7 7 10 10 7 10 7 10 6 2 10 4 4 4 10 6 6 4 10 10 10 10 10 1 8 10 8 4 10 8 8 10 5 2 1 6 6 10 9 3 10 10 4 10 1 4 10 7 10 10 2 8 2 10 6 5 10 8 3 10 2 4 10 4 10 9 5 10 10 9 10 1...
output:
NO NO NO YES YES YES NO NO NO YES NO NO NO NO NO NO NO YES NO NO NO NO NO NO NO NO NO YES NO NO NO YES NO NO NO YES YES NO NO YES NO NO NO NO NO NO NO NO YES YES YES YES NO NO NO YES YES NO NO NO NO NO NO NO NO YES YES NO NO YES NO NO NO NO NO YES YES YES NO NO NO YES NO YES YES NO NO YES NO NO NO N...