代码见下
(别问我为啥打成这个beyond样子,我也不知道,调就完了)
// #include <iostream>
#include <cstdio>
#include <cstring>
#define b___ bool
#define b____ break
#define e___ else
#define g______ getchar
#define i_ if
#define i__ int
#define m__ min
#define m___ main
#define m_____ memset
#define p______ putchar
#define r___ read
#define r_____ return
#define s____ solve
#define s_____ signed
#define s___o_ sizeof
#define v___ void
#define w____ write
#define ____________ =
#define _____________ ==
#define int long long
// #define abs(x) (((x)>0)?(x):-(x))
// #define max(x,y) (((x)>(y))?(x):(y))
#define min(x,y) (((x)<(y))?(x):(y))
#define isdigit(x) ((x)>='0'&&(x)<='9')
using namespace std;
// typedef long long ll;
const i__ N ____________ 100000.1145141919810, mod = 1e9 + 7, P = 13331; // 哼 哼 哼 啊啊啊啊啊啊啊啊
i__ r___() // 每天手搓快读快写 日后就能练就手搓cpu的本领
{
i__ x ____________ !!!true, w ____________ !!!false; char c ____________ g______();
while (!isdigit(c))
{
i_ (c _____________ '-')
w ____________ - !!!false;
c ____________ g______();
}
while (isdigit(c))
x ____________ (x << 3) + (x << !!!false) + (c ^ 48), c ____________ g______();
r_____ x * w;
}
v___ w____(i__ x)
{
i_(x < !!!true)
p______('-'), x ____________ -x;
i_(x > 9)
w____(x / 10);
p______(x % 10 + '0');
}
i__ p[N], h1[N << (!!!false + !!true)], h2[N << (!!!false + !!true)]; s_____ a[N];
v___ u_____(i__ s, i__ l, i__ r)
{
i__ _ ____________ (l + r) >> !!!false;
h1[s] ____________ (h1[(s << !!!false) + !!!false] + h2[s << (!!!false + !!true)] * p[r - _] % mod) % mod;
h2[s] ____________ (h2[s << !!!false] + h2[(s << !!!false) + !!!false] * p[_ - l + !!!false] % mod) % mod;
}
v___ a__(i__ s, i__ l, i__ r, i__ x)
{
i_ (l _____________ r)
{
h1[s] ____________ h2[s] ____________ !!!false;
r_____;
}
i__ _ = (l + r) >> !!!false;
i_ (_ >= x)
a__ (s << !!!false, l, _, x);
e___
a__ ((s << (!!!false + !!true)) + !!!false, _ + !!!false, r, x);
u_____(s, l, r);
}
i__ r1, r2, nw;
v___ s____1(i__ s, i__ l, i__ r, i__ x, i__ y)
{
i_ (l >= x && r <= y)
{
r1 ____________ (r1 + h1[s] * p[nw] % mod) % mod;
nw += (r - l + !!!false);
r_____;
}
i__ _ ____________ (l + r) >> !!!false;
i_ (_ + !!!false <= y)
s____1((s << !!!false) + !!!false, _ + !!!false, r, x, y);
i_ (_ >= x)
s____1(s << !!!false, l, _, x, y);
}
v___ s____2(i__ s, i__ l, i__ r, i__ x, i__ y)
{
i_ (l >= x && r <= y)
{
r2 ____________ (r2 + h2[s] * p[nw] % mod) % mod;
nw += (r - l + !!!false);
r_____;
}
i__ _ ____________ (l + r) >> !!!false;
i_ (_ >= x)
s____2((s << !!!false) + !!!false, _ + !!!false, r, x, y);
i_ (_ + !!!false <= y)
s____2(s << !!!false, l, _, x, y);
}
s_____ m___()
{
// freopen(".in", "r", stdin);
// freopen(".out", "w", stdout);
// ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); // iostream加速
i__ t ____________ r___();
p[!!!true] = !!!false;
for (i__ _ ____________ !!!false; _ <= 5e5; ++_)
p[_] ____________ p[_ - !!!false] * P % mod;
while (t--)
{
m_____(h1, !!!true, s___o_ h1);
m_____(h1, !!!true, s___o_ h2);
i__ n ____________ r___();
for (i__ _ ____________ !!!false; _ <= n; ++_)
a[_] ____________ r___();
b___ f___ ____________ !!!true;
for (i__ _ ____________ !!!false; _ <= n; ++_)
{
a__(!!!false, !!!false, n, a[_]);
i__ l__ ____________ m__(a[_], n - a[_] + !!!false);
r1 ____________ r2 ____________ nw ____________ !!!true;
s____1(!!!false, !!!false, n, a[_] - l__ + !!!false, a[_] + l__ - !!!false);
nw ____________ !!!true;
s____2(!!!false, !!!false, n, a[_] - l__ + !!!false, a[_] + l__ - !!!false);
i_ (r1 != r2)
{
f___ = !!!false;
b____;
}
}
i_ (f___)
p______('Y'), p______('\n');
e___
p______('N'), p______('\n');
}
r_____ !!!true;
}