QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#641839#8055. BalancemaspyAC ✓385ms51328kbC++2036.8kb2024-10-15 01:34:082024-10-15 01:34:08

Judging History

你现在查看的是最新测评结果

  • [2024-10-15 01:34:08]
  • 评测
  • 测评结果:AC
  • 用时:385ms
  • 内存:51328kb
  • [2024-10-15 01:34:08]
  • 提交

answer

#line 1 "/home/maspy/compro/library/my_template.hpp"
#if defined(LOCAL)
#include <my_template_compiled.hpp>
#else

// https://codeforces.com/blog/entry/96344
#pragma GCC optimize("Ofast,unroll-loops")
// いまの CF だとこれ入れると動かない?
// #pragma GCC target("avx2,popcnt")

#include <bits/stdc++.h>

using namespace std;

using ll = long long;
using u8 = uint8_t;
using u16 = uint16_t;
using u32 = uint32_t;
using u64 = uint64_t;
using i128 = __int128;
using u128 = unsigned __int128;
using f128 = __float128;

template <class T>
constexpr T infty = 0;
template <>
constexpr int infty<int> = 1'010'000'000;
template <>
constexpr ll infty<ll> = 2'020'000'000'000'000'000;
template <>
constexpr u32 infty<u32> = infty<int>;
template <>
constexpr u64 infty<u64> = infty<ll>;
template <>
constexpr i128 infty<i128> = i128(infty<ll>) * 2'000'000'000'000'000'000;
template <>
constexpr double infty<double> = infty<ll>;
template <>
constexpr long double infty<long double> = infty<ll>;

using pi = pair<ll, ll>;
using vi = vector<ll>;
template <class T>
using vc = vector<T>;
template <class T>
using vvc = vector<vc<T>>;
template <class T>
using vvvc = vector<vvc<T>>;
template <class T>
using vvvvc = vector<vvvc<T>>;
template <class T>
using vvvvvc = vector<vvvvc<T>>;
template <class T>
using pq = priority_queue<T>;
template <class T>
using pqg = priority_queue<T, vector<T>, greater<T>>;

#define vv(type, name, h, ...) vector<vector<type>> name(h, vector<type>(__VA_ARGS__))
#define vvv(type, name, h, w, ...) vector<vector<vector<type>>> name(h, vector<vector<type>>(w, vector<type>(__VA_ARGS__)))
#define vvvv(type, name, a, b, c, ...) \
  vector<vector<vector<vector<type>>>> name(a, vector<vector<vector<type>>>(b, vector<vector<type>>(c, vector<type>(__VA_ARGS__))))

// https://trap.jp/post/1224/
#define FOR1(a) for (ll _ = 0; _ < ll(a); ++_)
#define FOR2(i, a) for (ll i = 0; i < ll(a); ++i)
#define FOR3(i, a, b) for (ll i = a; i < ll(b); ++i)
#define FOR4(i, a, b, c) for (ll i = a; i < ll(b); i += (c))
#define FOR1_R(a) for (ll i = (a)-1; i >= ll(0); --i)
#define FOR2_R(i, a) for (ll i = (a)-1; i >= ll(0); --i)
#define FOR3_R(i, a, b) for (ll i = (b)-1; i >= ll(a); --i)
#define overload4(a, b, c, d, e, ...) e
#define overload3(a, b, c, d, ...) d
#define FOR(...) overload4(__VA_ARGS__, FOR4, FOR3, FOR2, FOR1)(__VA_ARGS__)
#define FOR_R(...) overload3(__VA_ARGS__, FOR3_R, FOR2_R, FOR1_R)(__VA_ARGS__)

#define FOR_subset(t, s) for (ll t = (s); t >= 0; t = (t == 0 ? -1 : (t - 1) & (s)))
#define all(x) x.begin(), x.end()
#define len(x) ll(x.size())
#define elif else if

#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define fi first
#define se second

#define stoi stoll

int popcnt(int x) { return __builtin_popcount(x); }
int popcnt(u32 x) { return __builtin_popcount(x); }
int popcnt(ll x) { return __builtin_popcountll(x); }
int popcnt(u64 x) { return __builtin_popcountll(x); }
int popcnt_mod_2(int x) { return __builtin_parity(x); }
int popcnt_mod_2(u32 x) { return __builtin_parity(x); }
int popcnt_mod_2(ll x) { return __builtin_parityll(x); }
int popcnt_mod_2(u64 x) { return __builtin_parityll(x); }
// (0, 1, 2, 3, 4) -> (-1, 0, 1, 1, 2)
int topbit(int x) { return (x == 0 ? -1 : 31 - __builtin_clz(x)); }
int topbit(u32 x) { return (x == 0 ? -1 : 31 - __builtin_clz(x)); }
int topbit(ll x) { return (x == 0 ? -1 : 63 - __builtin_clzll(x)); }
int topbit(u64 x) { return (x == 0 ? -1 : 63 - __builtin_clzll(x)); }
// (0, 1, 2, 3, 4) -> (-1, 0, 1, 0, 2)
int lowbit(int x) { return (x == 0 ? -1 : __builtin_ctz(x)); }
int lowbit(u32 x) { return (x == 0 ? -1 : __builtin_ctz(x)); }
int lowbit(ll x) { return (x == 0 ? -1 : __builtin_ctzll(x)); }
int lowbit(u64 x) { return (x == 0 ? -1 : __builtin_ctzll(x)); }

template <typename T>
T floor(T a, T b) {
  return a / b - (a % b && (a ^ b) < 0);
}
template <typename T>
T ceil(T x, T y) {
  return floor(x + y - 1, y);
}
template <typename T>
T bmod(T x, T y) {
  return x - y * floor(x, y);
}
template <typename T>
pair<T, T> divmod(T x, T y) {
  T q = floor(x, y);
  return {q, x - q * y};
}

template <typename T, typename U>
T SUM(const vector<U> &A) {
  T sm = 0;
  for (auto &&a: A) sm += a;
  return sm;
}

#define MIN(v) *min_element(all(v))
#define MAX(v) *max_element(all(v))
#define LB(c, x) distance((c).begin(), lower_bound(all(c), (x)))
#define UB(c, x) distance((c).begin(), upper_bound(all(c), (x)))
#define UNIQUE(x) sort(all(x)), x.erase(unique(all(x)), x.end()), x.shrink_to_fit()

template <typename T>
T POP(deque<T> &que) {
  T a = que.front();
  que.pop_front();
  return a;
}
template <typename T>
T POP(pq<T> &que) {
  T a = que.top();
  que.pop();
  return a;
}
template <typename T>
T POP(pqg<T> &que) {
  T a = que.top();
  que.pop();
  return a;
}
template <typename T>
T POP(vc<T> &que) {
  T a = que.back();
  que.pop_back();
  return a;
}

template <typename F>
ll binary_search(F check, ll ok, ll ng, bool check_ok = true) {
  if (check_ok) assert(check(ok));
  while (abs(ok - ng) > 1) {
    auto x = (ng + ok) / 2;
    (check(x) ? ok : ng) = x;
  }
  return ok;
}
template <typename F>
double binary_search_real(F check, double ok, double ng, int iter = 100) {
  FOR(iter) {
    double x = (ok + ng) / 2;
    (check(x) ? ok : ng) = x;
  }
  return (ok + ng) / 2;
}

template <class T, class S>
inline bool chmax(T &a, const S &b) {
  return (a < b ? a = b, 1 : 0);
}
template <class T, class S>
inline bool chmin(T &a, const S &b) {
  return (a > b ? a = b, 1 : 0);
}

// ? は -1
vc<int> s_to_vi(const string &S, char first_char) {
  vc<int> A(S.size());
  FOR(i, S.size()) { A[i] = (S[i] != '?' ? S[i] - first_char : -1); }
  return A;
}

template <typename T, typename U>
vector<T> cumsum(vector<U> &A, int off = 1) {
  int N = A.size();
  vector<T> B(N + 1);
  FOR(i, N) { B[i + 1] = B[i] + A[i]; }
  if (off == 0) B.erase(B.begin());
  return B;
}

// stable sort
template <typename T>
vector<int> argsort(const vector<T> &A) {
  vector<int> ids(len(A));
  iota(all(ids), 0);
  sort(all(ids), [&](int i, int j) { return (A[i] == A[j] ? i < j : A[i] < A[j]); });
  return ids;
}

// A[I[0]], A[I[1]], ...
template <typename T>
vc<T> rearrange(const vc<T> &A, const vc<int> &I) {
  vc<T> B(len(I));
  FOR(i, len(I)) B[i] = A[I[i]];
  return B;
}

template <typename T, typename... Vectors>
void concat(vc<T> &first, const Vectors &... others) {
  vc<T> &res = first;
  (res.insert(res.end(), others.begin(), others.end()), ...);
}
#endif
#line 1 "/home/maspy/compro/library/other/io.hpp"
#define FASTIO
#include <unistd.h>

// https://judge.yosupo.jp/submission/21623
namespace fastio {
static constexpr uint32_t SZ = 1 << 17;
char ibuf[SZ];
char obuf[SZ];
char out[100];
// pointer of ibuf, obuf
uint32_t pil = 0, pir = 0, por = 0;

struct Pre {
  char num[10000][4];
  constexpr Pre() : num() {
    for (int i = 0; i < 10000; i++) {
      int n = i;
      for (int j = 3; j >= 0; j--) {
        num[i][j] = n % 10 | '0';
        n /= 10;
      }
    }
  }
} constexpr pre;

inline void load() {
  memcpy(ibuf, ibuf + pil, pir - pil);
  pir = pir - pil + fread(ibuf + pir - pil, 1, SZ - pir + pil, stdin);
  pil = 0;
  if (pir < SZ) ibuf[pir++] = '\n';
}

inline void flush() {
  fwrite(obuf, 1, por, stdout);
  por = 0;
}

void rd(char &c) {
  do {
    if (pil + 1 > pir) load();
    c = ibuf[pil++];
  } while (isspace(c));
}

void rd(string &x) {
  x.clear();
  char c;
  do {
    if (pil + 1 > pir) load();
    c = ibuf[pil++];
  } while (isspace(c));
  do {
    x += c;
    if (pil == pir) load();
    c = ibuf[pil++];
  } while (!isspace(c));
}

template <typename T>
void rd_real(T &x) {
  string s;
  rd(s);
  x = stod(s);
}

template <typename T>
void rd_integer(T &x) {
  if (pil + 100 > pir) load();
  char c;
  do
    c = ibuf[pil++];
  while (c < '-');
  bool minus = 0;
  if constexpr (is_signed<T>::value || is_same_v<T, i128>) {
    if (c == '-') { minus = 1, c = ibuf[pil++]; }
  }
  x = 0;
  while ('0' <= c) { x = x * 10 + (c & 15), c = ibuf[pil++]; }
  if constexpr (is_signed<T>::value || is_same_v<T, i128>) {
    if (minus) x = -x;
  }
}

void rd(int &x) { rd_integer(x); }
void rd(ll &x) { rd_integer(x); }
void rd(i128 &x) { rd_integer(x); }
void rd(u32 &x) { rd_integer(x); }
void rd(u64 &x) { rd_integer(x); }
void rd(u128 &x) { rd_integer(x); }
void rd(double &x) { rd_real(x); }
void rd(long double &x) { rd_real(x); }
void rd(f128 &x) { rd_real(x); }

template <class T, class U>
void rd(pair<T, U> &p) {
  return rd(p.first), rd(p.second);
}
template <size_t N = 0, typename T>
void rd_tuple(T &t) {
  if constexpr (N < std::tuple_size<T>::value) {
    auto &x = std::get<N>(t);
    rd(x);
    rd_tuple<N + 1>(t);
  }
}
template <class... T>
void rd(tuple<T...> &tpl) {
  rd_tuple(tpl);
}

template <size_t N = 0, typename T>
void rd(array<T, N> &x) {
  for (auto &d: x) rd(d);
}
template <class T>
void rd(vc<T> &x) {
  for (auto &d: x) rd(d);
}

void read() {}
template <class H, class... T>
void read(H &h, T &... t) {
  rd(h), read(t...);
}

void wt(const char c) {
  if (por == SZ) flush();
  obuf[por++] = c;
}
void wt(const string s) {
  for (char c: s) wt(c);
}
void wt(const char *s) {
  size_t len = strlen(s);
  for (size_t i = 0; i < len; i++) wt(s[i]);
}

template <typename T>
void wt_integer(T x) {
  if (por > SZ - 100) flush();
  if (x < 0) { obuf[por++] = '-', x = -x; }
  int outi;
  for (outi = 96; x >= 10000; outi -= 4) {
    memcpy(out + outi, pre.num[x % 10000], 4);
    x /= 10000;
  }
  if (x >= 1000) {
    memcpy(obuf + por, pre.num[x], 4);
    por += 4;
  } else if (x >= 100) {
    memcpy(obuf + por, pre.num[x] + 1, 3);
    por += 3;
  } else if (x >= 10) {
    int q = (x * 103) >> 10;
    obuf[por] = q | '0';
    obuf[por + 1] = (x - q * 10) | '0';
    por += 2;
  } else
    obuf[por++] = x | '0';
  memcpy(obuf + por, out + outi + 4, 96 - outi);
  por += 96 - outi;
}

template <typename T>
void wt_real(T x) {
  ostringstream oss;
  oss << fixed << setprecision(15) << double(x);
  string s = oss.str();
  wt(s);
}

void wt(int x) { wt_integer(x); }
void wt(ll x) { wt_integer(x); }
void wt(i128 x) { wt_integer(x); }
void wt(u32 x) { wt_integer(x); }
void wt(u64 x) { wt_integer(x); }
void wt(u128 x) { wt_integer(x); }
void wt(double x) { wt_real(x); }
void wt(long double x) { wt_real(x); }
void wt(f128 x) { wt_real(x); }

template <class T, class U>
void wt(const pair<T, U> val) {
  wt(val.first);
  wt(' ');
  wt(val.second);
}
template <size_t N = 0, typename T>
void wt_tuple(const T t) {
  if constexpr (N < std::tuple_size<T>::value) {
    if constexpr (N > 0) { wt(' '); }
    const auto x = std::get<N>(t);
    wt(x);
    wt_tuple<N + 1>(t);
  }
}
template <class... T>
void wt(tuple<T...> tpl) {
  wt_tuple(tpl);
}
template <class T, size_t S>
void wt(const array<T, S> val) {
  auto n = val.size();
  for (size_t i = 0; i < n; i++) {
    if (i) wt(' ');
    wt(val[i]);
  }
}
template <class T>
void wt(const vector<T> val) {
  auto n = val.size();
  for (size_t i = 0; i < n; i++) {
    if (i) wt(' ');
    wt(val[i]);
  }
}

void print() { wt('\n'); }
template <class Head, class... Tail>
void print(Head &&head, Tail &&... tail) {
  wt(head);
  if (sizeof...(Tail)) wt(' ');
  print(forward<Tail>(tail)...);
}

// gcc expansion. called automaticall after main.
void __attribute__((destructor)) _d() { flush(); }
} // namespace fastio
using fastio::read;
using fastio::print;
using fastio::flush;

#if defined(LOCAL)
#define SHOW(...) SHOW_IMPL(__VA_ARGS__, SHOW6, SHOW5, SHOW4, SHOW3, SHOW2, SHOW1)(__VA_ARGS__)
#define SHOW_IMPL(_1, _2, _3, _4, _5, _6, NAME, ...) NAME
#define SHOW1(x) print(#x, "=", (x)), flush()
#define SHOW2(x, y) print(#x, "=", (x), #y, "=", (y)), flush()
#define SHOW3(x, y, z) print(#x, "=", (x), #y, "=", (y), #z, "=", (z)), flush()
#define SHOW4(x, y, z, w) print(#x, "=", (x), #y, "=", (y), #z, "=", (z), #w, "=", (w)), flush()
#define SHOW5(x, y, z, w, v) print(#x, "=", (x), #y, "=", (y), #z, "=", (z), #w, "=", (w), #v, "=", (v)), flush()
#define SHOW6(x, y, z, w, v, u) print(#x, "=", (x), #y, "=", (y), #z, "=", (z), #w, "=", (w), #v, "=", (v), #u, "=", (u)), flush()
#else
#define SHOW(...)
#endif

#define INT(...)   \
  int __VA_ARGS__; \
  read(__VA_ARGS__)
#define LL(...)   \
  ll __VA_ARGS__; \
  read(__VA_ARGS__)
#define U32(...)   \
  u32 __VA_ARGS__; \
  read(__VA_ARGS__)
#define U64(...)   \
  u64 __VA_ARGS__; \
  read(__VA_ARGS__)
#define STR(...)      \
  string __VA_ARGS__; \
  read(__VA_ARGS__)
#define CHAR(...)   \
  char __VA_ARGS__; \
  read(__VA_ARGS__)
#define DBL(...)      \
  double __VA_ARGS__; \
  read(__VA_ARGS__)

#define VEC(type, name, size) \
  vector<type> name(size);    \
  read(name)
#define VV(type, name, h, w)                     \
  vector<vector<type>> name(h, vector<type>(w)); \
  read(name)

void YES(bool t = 1) { print(t ? "YES" : "NO"); }
void NO(bool t = 1) { YES(!t); }
void Yes(bool t = 1) { print(t ? "Yes" : "No"); }
void No(bool t = 1) { Yes(!t); }
void yes(bool t = 1) { print(t ? "yes" : "no"); }
void no(bool t = 1) { yes(!t); }
#line 3 "main.cpp"

#line 2 "/home/maspy/compro/library/graph/base.hpp"

template <typename T>
struct Edge {
  int frm, to;
  T cost;
  int id;
};

template <typename T = int, bool directed = false>
struct Graph {
  static constexpr bool is_directed = directed;
  int N, M;
  using cost_type = T;
  using edge_type = Edge<T>;
  vector<edge_type> edges;
  vector<int> indptr;
  vector<edge_type> csr_edges;
  vc<int> vc_deg, vc_indeg, vc_outdeg;
  bool prepared;

  class OutgoingEdges {
  public:
    OutgoingEdges(const Graph* G, int l, int r) : G(G), l(l), r(r) {}

    const edge_type* begin() const {
      if (l == r) { return 0; }
      return &G->csr_edges[l];
    }

    const edge_type* end() const {
      if (l == r) { return 0; }
      return &G->csr_edges[r];
    }

  private:
    const Graph* G;
    int l, r;
  };

  bool is_prepared() { return prepared; }

  Graph() : N(0), M(0), prepared(0) {}
  Graph(int N) : N(N), M(0), prepared(0) {}

  void build(int n) {
    N = n, M = 0;
    prepared = 0;
    edges.clear();
    indptr.clear();
    csr_edges.clear();
    vc_deg.clear();
    vc_indeg.clear();
    vc_outdeg.clear();
  }

  void add(int frm, int to, T cost = 1, int i = -1) {
    assert(!prepared);
    assert(0 <= frm && 0 <= to && to < N);
    if (i == -1) i = M;
    auto e = edge_type({frm, to, cost, i});
    edges.eb(e);
    ++M;
  }

#ifdef FASTIO
  // wt, off
  void read_tree(bool wt = false, int off = 1) { read_graph(N - 1, wt, off); }

  void read_graph(int M, bool wt = false, int off = 1) {
    for (int m = 0; m < M; ++m) {
      INT(a, b);
      a -= off, b -= off;
      if (!wt) {
        add(a, b);
      } else {
        T c;
        read(c);
        add(a, b, c);
      }
    }
    build();
  }
#endif

  void build() {
    assert(!prepared);
    prepared = true;
    indptr.assign(N + 1, 0);
    for (auto&& e: edges) {
      indptr[e.frm + 1]++;
      if (!directed) indptr[e.to + 1]++;
    }
    for (int v = 0; v < N; ++v) { indptr[v + 1] += indptr[v]; }
    auto counter = indptr;
    csr_edges.resize(indptr.back() + 1);
    for (auto&& e: edges) {
      csr_edges[counter[e.frm]++] = e;
      if (!directed)
        csr_edges[counter[e.to]++] = edge_type({e.to, e.frm, e.cost, e.id});
    }
  }

  OutgoingEdges operator[](int v) const {
    assert(prepared);
    return {this, indptr[v], indptr[v + 1]};
  }

  vc<int> deg_array() {
    if (vc_deg.empty()) calc_deg();
    return vc_deg;
  }

  pair<vc<int>, vc<int>> deg_array_inout() {
    if (vc_indeg.empty()) calc_deg_inout();
    return {vc_indeg, vc_outdeg};
  }

  int deg(int v) {
    if (vc_deg.empty()) calc_deg();
    return vc_deg[v];
  }

  int in_deg(int v) {
    if (vc_indeg.empty()) calc_deg_inout();
    return vc_indeg[v];
  }

  int out_deg(int v) {
    if (vc_outdeg.empty()) calc_deg_inout();
    return vc_outdeg[v];
  }

#ifdef FASTIO
  void debug() {
    print("Graph");
    if (!prepared) {
      print("frm to cost id");
      for (auto&& e: edges) print(e.frm, e.to, e.cost, e.id);
    } else {
      print("indptr", indptr);
      print("frm to cost id");
      FOR(v, N) for (auto&& e: (*this)[v]) print(e.frm, e.to, e.cost, e.id);
    }
  }
#endif

  vc<int> new_idx;
  vc<bool> used_e;

  // G における頂点 V[i] が、新しいグラフで i になるようにする
  // {G, es}
  // sum(deg(v)) の計算量になっていて、
  // 新しいグラフの n+m より大きい可能性があるので注意
  Graph<T, directed> rearrange(vc<int> V, bool keep_eid = 0) {
    if (len(new_idx) != N) new_idx.assign(N, -1);
    int n = len(V);
    FOR(i, n) new_idx[V[i]] = i;
    Graph<T, directed> G(n);
    vc<int> history;
    FOR(i, n) {
      for (auto&& e: (*this)[V[i]]) {
        if (len(used_e) <= e.id) used_e.resize(e.id + 1);
        if (used_e[e.id]) continue;
        int a = e.frm, b = e.to;
        if (new_idx[a] != -1 && new_idx[b] != -1) {
          history.eb(e.id);
          used_e[e.id] = 1;
          int eid = (keep_eid ? e.id : -1);
          G.add(new_idx[a], new_idx[b], e.cost, eid);
        }
      }
    }
    FOR(i, n) new_idx[V[i]] = -1;
    for (auto&& eid: history) used_e[eid] = 0;
    G.build();
    return G;
  }

  Graph<T, true> to_directed_tree(int root = -1) {
    if (root == -1) root = 0;
    assert(!is_directed && prepared && M == N - 1);
    Graph<T, true> G1(N);
    vc<int> par(N, -1);
    auto dfs = [&](auto& dfs, int v) -> void {
      for (auto& e: (*this)[v]) {
        if (e.to == par[v]) continue;
        par[e.to] = v, dfs(dfs, e.to);
      }
    };
    dfs(dfs, root);
    for (auto& e: edges) {
      int a = e.frm, b = e.to;
      if (par[a] == b) swap(a, b);
      assert(par[b] == a);
      G1.add(a, b, e.cost);
    }
    G1.build();
    return G1;
  }

private:
  void calc_deg() {
    assert(vc_deg.empty());
    vc_deg.resize(N);
    for (auto&& e: edges) vc_deg[e.frm]++, vc_deg[e.to]++;
  }

  void calc_deg_inout() {
    assert(vc_indeg.empty());
    vc_indeg.resize(N);
    vc_outdeg.resize(N);
    for (auto&& e: edges) { vc_indeg[e.to]++, vc_outdeg[e.frm]++; }
  }
};
#line 2 "/home/maspy/compro/library/ds/fastset.hpp"

// 64-ary tree
// space: (N/63) * u64
struct FastSet {
  static constexpr u32 B = 64;
  int n, log;
  vvc<u64> seg;

  FastSet() {}
  FastSet(int n) { build(n); }

  int size() { return n; }

  template <typename F>
  FastSet(int n, F f) {
    build(n, f);
  }

  void build(int m) {
    seg.clear();
    n = m;
    do {
      seg.push_back(vc<u64>((m + B - 1) / B));
      m = (m + B - 1) / B;
    } while (m > 1);
    log = len(seg);
  }
  template <typename F>
  void build(int n, F f) {
    build(n);
    FOR(i, n) { seg[0][i / B] |= u64(f(i)) << (i % B); }
    FOR(h, log - 1) {
      FOR(i, len(seg[h])) {
        seg[h + 1][i / B] |= u64(bool(seg[h][i])) << (i % B);
      }
    }
  }

  bool operator[](int i) const { return seg[0][i / B] >> (i % B) & 1; }
  void insert(int i) {
    for (int h = 0; h < log; h++) {
      seg[h][i / B] |= u64(1) << (i % B), i /= B;
    }
  }
  void add(int i) { insert(i); }
  void erase(int i) {
    u64 x = 0;
    for (int h = 0; h < log; h++) {
      seg[h][i / B] &= ~(u64(1) << (i % B));
      seg[h][i / B] |= x << (i % B);
      x = bool(seg[h][i / B]);
      i /= B;
    }
  }
  void remove(int i) { erase(i); }

  // min[x,n) or n
  int next(int i) {
    assert(i <= n);
    chmax(i, 0);
    for (int h = 0; h < log; h++) {
      if (i / B == seg[h].size()) break;
      u64 d = seg[h][i / B] >> (i % B);
      if (!d) {
        i = i / B + 1;
        continue;
      }
      i += lowbit(d);
      for (int g = h - 1; g >= 0; g--) {
        i *= B;
        i += lowbit(seg[g][i / B]);
      }
      return i;
    }
    return n;
  }

  // max [0,x], or -1
  int prev(int i) {
    assert(i >= -1);
    if (i >= n) i = n - 1;
    for (int h = 0; h < log; h++) {
      if (i == -1) break;
      u64 d = seg[h][i / B] << (63 - i % B);
      if (!d) {
        i = i / B - 1;
        continue;
      }
      i -= __builtin_clzll(d);
      for (int g = h - 1; g >= 0; g--) {
        i *= B;
        i += topbit(seg[g][i / B]);
      }
      return i;
    }
    return -1;
  }

  bool any(int l, int r) { return next(l) < r; }

  // [l, r)
  template <typename F>
  void enumerate(int l, int r, F f) {
    for (int x = next(l); x < r; x = next(x + 1)) f(x);
  }

  string to_string() {
    string s(n, '?');
    for (int i = 0; i < n; ++i) s[i] = ((*this)[i] ? '1' : '0');
    return s;
  }
};
#line 2 "/home/maspy/compro/library/graph/tree.hpp"

#line 4 "/home/maspy/compro/library/graph/tree.hpp"

// HLD euler tour をとっていろいろ。
template <typename GT>
struct Tree {
  using Graph_type = GT;
  GT &G;
  using WT = typename GT::cost_type;
  int N;
  vector<int> LID, RID, head, V, parent, VtoE;
  vc<int> depth;
  vc<WT> depth_weighted;

  Tree(GT &G, int r = 0, bool hld = 1) : G(G) { build(r, hld); }

  void build(int r = 0, bool hld = 1) {
    if (r == -1) return; // build を遅延したいとき
    N = G.N;
    LID.assign(N, -1), RID.assign(N, -1), head.assign(N, r);
    V.assign(N, -1), parent.assign(N, -1), VtoE.assign(N, -1);
    depth.assign(N, -1), depth_weighted.assign(N, 0);
    assert(G.is_prepared());
    int t1 = 0;
    dfs_sz(r, -1, hld);
    dfs_hld(r, t1);
  }

  void dfs_sz(int v, int p, bool hld) {
    auto &sz = RID;
    parent[v] = p;
    depth[v] = (p == -1 ? 0 : depth[p] + 1);
    sz[v] = 1;
    int l = G.indptr[v], r = G.indptr[v + 1];
    auto &csr = G.csr_edges;
    // 使う辺があれば先頭にする
    for (int i = r - 2; i >= l; --i) {
      if (hld && depth[csr[i + 1].to] == -1) swap(csr[i], csr[i + 1]);
    }
    int hld_sz = 0;
    for (int i = l; i < r; ++i) {
      auto e = csr[i];
      if (depth[e.to] != -1) continue;
      depth_weighted[e.to] = depth_weighted[v] + e.cost;
      VtoE[e.to] = e.id;
      dfs_sz(e.to, v, hld);
      sz[v] += sz[e.to];
      if (hld && chmax(hld_sz, sz[e.to]) && l < i) { swap(csr[l], csr[i]); }
    }
  }

  void dfs_hld(int v, int &times) {
    LID[v] = times++;
    RID[v] += LID[v];
    V[LID[v]] = v;
    bool heavy = true;
    for (auto &&e: G[v]) {
      if (depth[e.to] <= depth[v]) continue;
      head[e.to] = (heavy ? head[v] : e.to);
      heavy = false;
      dfs_hld(e.to, times);
    }
  }

  vc<int> heavy_path_at(int v) {
    vc<int> P = {v};
    while (1) {
      int a = P.back();
      for (auto &&e: G[a]) {
        if (e.to != parent[a] && head[e.to] == v) {
          P.eb(e.to);
          break;
        }
      }
      if (P.back() == a) break;
    }
    return P;
  }

  int heavy_child(int v) {
    int k = LID[v] + 1;
    if (k == N) return -1;
    int w = V[k];
    return (parent[w] == v ? w : -1);
  }

  int e_to_v(int eid) {
    auto e = G.edges[eid];
    return (parent[e.frm] == e.to ? e.frm : e.to);
  }
  int v_to_e(int v) { return VtoE[v]; }
  int get_eid(int u, int v) {
    if (parent[u] != v) swap(u, v);
    assert(parent[u] == v);
    return VtoE[u];
  }

  int ELID(int v) { return 2 * LID[v] - depth[v]; }
  int ERID(int v) { return 2 * RID[v] - depth[v] - 1; }

  // 目標地点へ進む個数が k
  int LA(int v, int k) {
    assert(k <= depth[v]);
    while (1) {
      int u = head[v];
      if (LID[v] - k >= LID[u]) return V[LID[v] - k];
      k -= LID[v] - LID[u] + 1;
      v = parent[u];
    }
  }
  int la(int u, int v) { return LA(u, v); }

  int LCA(int u, int v) {
    for (;; v = parent[head[v]]) {
      if (LID[u] > LID[v]) swap(u, v);
      if (head[u] == head[v]) return u;
    }
  }

  int meet(int a, int b, int c) { return LCA(a, b) ^ LCA(a, c) ^ LCA(b, c); }
  int lca(int u, int v) { return LCA(u, v); }

  int subtree_size(int v, int root = -1) {
    if (root == -1) return RID[v] - LID[v];
    if (v == root) return N;
    int x = jump(v, root, 1);
    if (in_subtree(v, x)) return RID[v] - LID[v];
    return N - RID[x] + LID[x];
  }

  int dist(int a, int b) {
    int c = LCA(a, b);
    return depth[a] + depth[b] - 2 * depth[c];
  }

  WT dist_weighted(int a, int b) {
    int c = LCA(a, b);
    return depth_weighted[a] + depth_weighted[b] - WT(2) * depth_weighted[c];
  }

  // a is in b
  bool in_subtree(int a, int b) { return LID[b] <= LID[a] && LID[a] < RID[b]; }

  int jump(int a, int b, ll k) {
    if (k == 1) {
      if (a == b) return -1;
      return (in_subtree(b, a) ? LA(b, depth[b] - depth[a] - 1) : parent[a]);
    }
    int c = LCA(a, b);
    int d_ac = depth[a] - depth[c];
    int d_bc = depth[b] - depth[c];
    if (k > d_ac + d_bc) return -1;
    if (k <= d_ac) return LA(a, k);
    return LA(b, d_ac + d_bc - k);
  }

  vc<int> collect_child(int v) {
    vc<int> res;
    for (auto &&e: G[v])
      if (e.to != parent[v]) res.eb(e.to);
    return res;
  }

  vc<int> collect_light(int v) {
    vc<int> res;
    bool skip = true;
    for (auto &&e: G[v])
      if (e.to != parent[v]) {
        if (!skip) res.eb(e.to);
        skip = false;
      }
    return res;
  }

  vc<pair<int, int>> get_path_decomposition(int u, int v, bool edge) {
    // [始点, 終点] の"閉"区間列。
    vc<pair<int, int>> up, down;
    while (1) {
      if (head[u] == head[v]) break;
      if (LID[u] < LID[v]) {
        down.eb(LID[head[v]], LID[v]);
        v = parent[head[v]];
      } else {
        up.eb(LID[u], LID[head[u]]);
        u = parent[head[u]];
      }
    }
    if (LID[u] < LID[v]) down.eb(LID[u] + edge, LID[v]);
    elif (LID[v] + edge <= LID[u]) up.eb(LID[u], LID[v] + edge);
    reverse(all(down));
    up.insert(up.end(), all(down));
    return up;
  }

  // 辺の列の情報 (frm,to,str)
  // str = "heavy_up", "heavy_down", "light_up", "light_down"
  vc<tuple<int, int, string>> get_path_decomposition_detail(int u, int v) {
    vc<tuple<int, int, string>> up, down;
    while (1) {
      if (head[u] == head[v]) break;
      if (LID[u] < LID[v]) {
        if (v != head[v]) down.eb(head[v], v, "heavy_down"), v = head[v];
        down.eb(parent[v], v, "light_down"), v = parent[v];
      } else {
        if (u != head[u]) up.eb(u, head[u], "heavy_up"), u = head[u];
        up.eb(u, parent[u], "light_up"), u = parent[u];
      }
    }
    if (LID[u] < LID[v]) down.eb(u, v, "heavy_down");
    elif (LID[v] < LID[u]) up.eb(u, v, "heavy_up");
    reverse(all(down));
    concat(up, down);
    return up;
  }

  vc<int> restore_path(int u, int v) {
    vc<int> P;
    for (auto &&[a, b]: get_path_decomposition(u, v, 0)) {
      if (a <= b) {
        FOR(i, a, b + 1) P.eb(V[i]);
      } else {
        FOR_R(i, b, a + 1) P.eb(V[i]);
      }
    }
    return P;
  }

  // path [a,b] と [c,d] の交わり. 空ならば {-1,-1}.
  // https://codeforces.com/problemset/problem/500/G
  pair<int, int> path_intersection(int a, int b, int c, int d) {
    int ab = lca(a, b), ac = lca(a, c), ad = lca(a, d);
    int bc = lca(b, c), bd = lca(b, d), cd = lca(c, d);
    int x = ab ^ ac ^ bc, y = ab ^ ad ^ bd; // meet(a,b,c), meet(a,b,d)
    if (x != y) return {x, y};
    int z = ac ^ ad ^ cd;
    if (x != z) x = -1;
    return {x, x};
  }
};
#line 4 "/home/maspy/compro/library/graph/tree_dp/rerooting_dp.hpp"

template <typename TREE, typename Data>
struct Rerooting_dp {
  static_assert(!TREE::Graph_type::is_directed);
  TREE& tree;
  vc<Data> dp_1; // 辺 pv に対して、部分木 v
  vc<Data> dp_2; // 辺 pv に対して、部分木 p
  vc<Data> dp;   // full tree

  template <typename F1, typename F2, typename F3>
  Rerooting_dp(TREE& tree, F1 f_ee, F2 f_ev, F3 f_ve, const Data unit)
      : tree(tree) {
    build(f_ee, f_ev, f_ve, unit);
  }

  // v を根としたときの full tree
  Data operator[](int v) { return dp[v]; }

  // root を根としたときの部分木 v
  Data get(int v, int root) {
    if (root == v) return dp[v];
    if (!tree.in_subtree(root, v)) { return dp_1[v]; }
    int w = tree.jump(v, root, 1);
    return dp_2[w];
  }

  template <typename F1, typename F2, typename F3>
  void build(F1 f_ee, F2 f_ev, F3 f_ve, const Data unit) {
    int N = tree.N;
    // dp1: subtree
    dp_1.assign(N, unit);
    FOR_R(i, N) {
      int v = tree.V[i];
      for (auto&& e: tree.G[v]) {
        if (e.to == tree.parent[v]) continue;
        dp_1[v] = f_ee(dp_1[v], f_ve(dp_1[e.to], e));
      }
      dp_1[v] = f_ev(dp_1[v], v);
    }

    // dp2[v]: subtree of p, rooted at v
    dp_2.assign(N, unit);
    // dp[v]: fulltree, rooted at v
    dp.assign(N, unit);
    FOR(i, N) {
      int p = tree.V[i];
      vc<int> ch;
      vc<Data> ch_data;
      Data x = unit;
      for (auto&& e: tree.G[p]) {
        if (e.to == tree.parent[p]) {
          x = f_ve(dp_2[p], e);
        } else {
          ch.eb(e.to);
          ch_data.eb(f_ve(dp_1[e.to], e));
        }
      }
      int n = len(ch);
      if (!n) {
        dp[p] = f_ev(x, p);
        continue;
      }
      vc<Data> prod_left(n, x);
      FOR(i, n - 1) prod_left[i + 1] = f_ee(prod_left[i], ch_data[i]);
      Data prod_right = unit;
      FOR_R(i, n) {
        dp_2[ch[i]] = f_ev(f_ee(prod_left[i], prod_right), p);
        prod_right = f_ee(prod_right, ch_data[i]);
      }
      dp[p] = f_ev(f_ee(x, prod_right), p);
    }
  }
};
#line 2 "/home/maspy/compro/library/ds/segtree/dual_segtree.hpp"

template <typename Monoid>
struct Dual_SegTree {
  using MA = Monoid;
  using A = typename MA::value_type;
  int n, log, size;
  vc<A> laz;

  Dual_SegTree() : Dual_SegTree(0) {}
  Dual_SegTree(int n) {
    build(n, [&](int i) -> A { return MA::unit(); });
  }
  template <typename F>
  Dual_SegTree(int n, F f) {
    build(n, f);
  }

  template <typename F>
  void build(int m, F f) {
    n = m;
    log = 1;
    while ((1 << log) < n) ++log;
    size = 1 << log;
    laz.assign(size << 1, MA::unit());
    FOR(i, n) laz[size + i] = f(i);
  }
  void build(int n) {
    build(n, [&](int i) -> A { return MA::unit(); });
  }

  A get(int p) {
    assert(0 <= p && p < n);
    p += size;
    for (int i = log; i >= 1; i--) push(p >> i);
    return laz[p];
  }

  vc<A> get_all() {
    FOR(i, size) push(i);
    return {laz.begin() + size, laz.begin() + size + n};
  }

  void set(int p, A x) {
    get(p);
    laz[p + size] = x;
  }

  void apply(int l, int r, const A& a) {
    assert(0 <= l && l <= r && r <= n);
    if (l == r) return;
    l += size, r += size;
    if (!MA::commute) {
      for (int i = log; i >= 1; i--) {
        if (((l >> i) << i) != l) push(l >> i);
        if (((r >> i) << i) != r) push((r - 1) >> i);
      }
    }
    while (l < r) {
      if (l & 1) all_apply(l++, a);
      if (r & 1) all_apply(--r, a);
      l >>= 1, r >>= 1;
    }
  }

private:
  void push(int k) {
    if (laz[k] == MA::unit()) return;
    all_apply(2 * k, laz[k]), all_apply(2 * k + 1, laz[k]);
    laz[k] = MA::unit();
  }
  void all_apply(int k, A a) { laz[k] = MA::op(laz[k], a); }
};
#line 3 "/home/maspy/compro/library/graph/ds/dual_tree_monoid.hpp"

template <typename TREE, typename Monoid, bool edge>
struct Dual_Tree_Monoid {
  using MX = Monoid;
  using X = typename MX::value_type;
  TREE &tree;
  int N;
  Dual_SegTree<MX> seg;

  Dual_Tree_Monoid(TREE &tree) : tree(tree), N(tree.N), seg(tree.N) {}

  X get(int i) {
    int v = i;
    if (edge) {
      auto &&e = tree.G.edges[i];
      v = (tree.parent[e.frm] == e.to ? e.frm : e.to);
    }
    return seg.get(tree.LID[v]);
  }

  vc<X> get_all() {
    vc<X> tmp = seg.get_all();
    vc<X> res;
    FOR(i, N) {
      if (edge && i == N - 1) break;
      int v = i;
      if (edge) {
        auto &&e = tree.G.edges[i];
        v = (tree.parent[e.frm] == e.to ? e.frm : e.to);
      }
      res.eb(tmp[tree.LID[v]]);
    }
    return res;
  }

  void apply_path(int u, int v, X x) {
    auto pd = tree.get_path_decomposition(u, v, edge);
    for (auto &&[a, b]: pd) {
      (a <= b ? seg.apply(a, b + 1, x) : seg.apply(b, a + 1, x));
    }
    return;
  }

  void apply_subtree(int u, X x) {
    int l = tree.LID[u], r = tree.RID[u];
    return seg.apply(l + edge, r, x);
  }

  void apply_outtree(int u, X a) {
    int l = tree.LID[u], r = tree.RID[u];
    seg.apply(0 + edge, l + edge, a);
    seg.apply(r, N, a);
  }
};
#line 2 "/home/maspy/compro/library/alg/monoid/min.hpp"

template <typename E>
struct Monoid_Min {
  using X = E;
  using value_type = X;
  static constexpr X op(const X &x, const X &y) noexcept { return min(x, y); }
  static constexpr X unit() { return infty<E>; }
  static constexpr bool commute = true;
};
#line 2 "/home/maspy/compro/library/graph/two_edge_component.hpp"

// (成分数, 成分番号の vector)
// 連結じゃなくても OK
template <typename GT>
pair<int, vc<int>> two_edge_component(GT& G) {
  static_assert(!GT::is_directed);
  int N = G.N, M = G.M, n_comp = 0;
  vc<int> V, par(N, -2), dp(N), comp(N);
  V.reserve(N);
  vc<bool> used(M);
  auto dfs = [&](auto& dfs, int v) -> void {
    V.eb(v);
    for (auto&& e: G[v]) {
      if (used[e.id]) continue;
      if (par[e.to] != -2) dp[v]++, dp[e.to]--, used[e.id] = 1;
      if (par[e.to] == -2) {
        used[e.id] = 1;
        par[e.to] = v;
        dfs(dfs, e.to);
      }
    }
  };
  FOR(v, N) if (par[v] == -2) { par[v] = -1, dfs(dfs, v); }
  FOR_R(i, N) {
    if (par[V[i]] != -1) dp[par[V[i]]] += dp[V[i]];
  }
  for (auto&& v: V) comp[v] = (dp[v] == 0 ? n_comp++ : comp[par[v]]);
  return {n_comp, comp};
}
#line 10 "main.cpp"

vc<int> solve_tree(Graph<int, 0> G, vc<int> WT, vc<int> CNT) {
  // 木
  // 各頂点の重み
  // a[i] ごとの重み和
  int N = G.N;
  int K = len(CNT);
  if (K == 1) {
    vc<int> ANS(N);
    return ANS;
  }
  vc<int> isin(N + 1);
  vc<int> Cc = cumsum<int>(CNT);
  FastSet S(Cc[K] + 1);
  for (auto& x: Cc) S.insert(x);

  Tree<decltype(G)> tree(G);
  vc<int> sub(N);

  FOR_R(i, N) {
    int v = tree.V[i];
    sub[v] += WT[v];
    for (auto& c: tree.collect_child(v)) { sub[v] += sub[c]; }
  }

  auto subtree_wt = [&](int v, int root) -> int {
    if (tree.parent[v] == root) return sub[v];
    assert(tree.parent[root] == v);
    return sub[0] - sub[root];
  };

  /*
  全方位 dp
  最後に切った辺 a->b
  切ってできた subtree size
  (-1,-1,0)
  */

  map<pi, pi> NXT;

  struct Data {
    int a, b;
    int sz;
  };

  Data unit = {-1, -1, 0};
  auto fee = [&](Data x, Data y) -> Data {
    if (x.sz > y.sz) return x;
    return y;
  };
  auto fev = [&](Data x, int v) -> Data { return x; };
  // e は v に入る有向辺
  auto fve = [&](Data x, auto& e) -> Data {
    int n = subtree_wt(e.to, e.frm);
    if (!S[n]) return x;
    int m = S.prev(n - 1);
    if (x.sz == m) {
      pi p = {e.frm, e.to};
      NXT[p] = {x.a, x.b};
      x.a = e.frm, x.b = e.to, x.sz = n;
      return x;
    }
    return x;
  };
  Rerooting_dp<decltype(tree), Data> dp(tree, fee, fev, fve, unit);

  int n = S.prev(sub[0] - 1);
  int a = -1, b = -1;

  FOR(v, N) {
    Data X = dp[v];
    if (X.sz == n) { a = X.a, b = X.b; }
  }
  if (a == -1) return {};
  vc<pi> AB;
  AB.eb(a, b);
  while (1) {
    auto [a, b] = AB.back();
    if (a == -1) break;
    AB.eb(NXT[AB.back()]);
  }
  POP(AB);
  // print("AB");
  // for (auto& p: AB) print(p);
  assert(len(AB) == K - 1);

  Dual_Tree_Monoid<decltype(tree), Monoid_Min<int>, false> TM(tree);
  TM.apply_subtree(0, K - 1);
  FOR(i, len(AB)) {
    int x = K - 2 - i;
    auto [a, b] = AB[i];
    if (tree.in_subtree(a, b)) {
      TM.apply_outtree(a, x);
    } else {
      TM.apply_subtree(b, x);
    }
  }

  vc<int> ANS = TM.get_all();
  return ANS;
}

void solve() {
  LL(N, M);
  Graph<int, 0> H(N);
  H.read_graph(M);
  VEC(int, A, N);
  vc<int> key = A;
  UNIQUE(key);
  for (auto& x: A) x = LB(key, x);
  int K = len(key);
  vc<int> CNT(K);
  for (auto& x: A) CNT[x]++;

  // 辺連結成分を縮約した木を作る
  auto [nc, comp] = two_edge_component(H);
  Graph<int, 0> G(nc);
  for (auto& e: H.edges) {
    int a = e.frm, b = e.to;
    a = comp[a], b = comp[b];
    if (a == b) continue;
    G.add(a, b);
  }
  G.build();
  vc<int> WT(nc);
  FOR(v, N) WT[comp[v]]++;
  vc<int> ANS = solve_tree(G, WT, CNT);

  if (ANS.empty()) return No();

  vc<int> X(N);
  FOR(i, N) X[i] = key[ANS[comp[i]]];
  Yes();
  print(X);
}

signed main() {
  INT(T);
  FOR(T) solve();
  return 0;
}

这程序好像有点Bug,我给组数据试试?

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 3724kb

input:

5
5 4
1 2
2 3
3 4
4 5
1 2 3 4 5
5 4
1 2
1 3
1 4
1 5
1 2 3 4 5
5 4
1 2
1 3
1 4
1 5
1 2 2 2 3
5 6
1 2
1 2
2 3
3 4
4 5
3 5
1 2 1 2 1
2 2
1 2
1 2
1 2

output:

Yes
1 2 3 4 5
No
Yes
2 1 2 2 3
Yes
2 2 1 1 1
No

result:

ok ok (5 test cases)

Test #2:

score: 0
Accepted
time: 119ms
memory: 3980kb

input:

100000
4 3
4 2
1 3
2 1
2 1 3 2
5 7
2 5
5 3
2 3
5 1
4 3
2 4
4 3
1 3 1 1 2
3 2
2 1
2 3
1 1 1
4 7
3 4
1 4
2 3
4 3
4 2
3 1
4 3
2 3 3 2
4 6
2 4
3 1
1 2
1 2
2 3
4 2
1 1 3 3
4 7
3 2
4 2
1 2
3 4
3 2
2 4
3 4
2 1 1 1
5 5
3 2
1 5
4 5
4 3
2 1
1 2 2 3 2
3 5
2 3
1 3
3 1
3 1
2 1
3 2 3
2 3
2 1
2 1
1 2
1 1
2 3
2 1
1...

output:

Yes
2 2 1 3
No
Yes
1 1 1
No
No
Yes
2 1 1 1
No
No
Yes
1 1
Yes
1 1
Yes
1 1
Yes
1 1 1 1
No
Yes
1 1 1 1 1
Yes
1 3 1 1 1
Yes
1 1 1
Yes
1 2
Yes
1 1 1 1 1
Yes
1 2
No
Yes
1 1
Yes
1 1 1
Yes
1 1
Yes
1 1 1 1
Yes
1 1
Yes
2 2 2 2 2
Yes
1 1 1 1 1
Yes
1 1
Yes
1 2 1 1
No
Yes
1 1
No
Yes
1 1
No
No
No
Yes
1 1 2 1 1
Ye...

result:

ok ok (100000 test cases)

Test #3:

score: 0
Accepted
time: 162ms
memory: 4000kb

input:

83335
9 17
1 4
8 9
5 2
1 3
2 7
1 7
2 8
6 7
2 4
1 8
5 8
7 1
8 6
4 6
4 7
6 9
7 9
7 3 4 4 7 4 2 4 8
6 9
3 1
1 2
3 5
1 2
3 4
4 5
6 3
6 1
6 2
4 3 2 2 1 3
9 8
9 3
5 7
5 9
2 6
1 8
4 1
4 2
4 3
4 2 5 3 4 5 4 5 4
6 7
2 1
1 5
6 1
3 1
6 5
2 4
5 3
2 1 2 1 2 1
4 6
2 1
4 2
1 4
1 2
1 4
3 1
2 2 4 2
6 10
2 3
3 5
2 1
...

output:

No
No
Yes
4 3 4 4 5 2 5 4 5
No
Yes
2 2 4 2
No
Yes
3 3 2 3
Yes
2 1 2
No
Yes
1 1 1 1 1
No
Yes
1 1 1
Yes
1 1 3 3 3
Yes
1 1
Yes
1 1
Yes
1 1 1 1
Yes
3 1 3
No
Yes
1 1 1 1 1 1 1 1
Yes
1 1 1 1 1 1 1
No
Yes
1 1
No
Yes
1 1 1 1 1
Yes
2 1 1 2 1
No
Yes
1 2 3 1 3 3 3 1
No
No
No
No
No
No
No
No
No
No
No
No
Yes
7 6 ...

result:

ok ok (83335 test cases)

Test #4:

score: 0
Accepted
time: 150ms
memory: 3920kb

input:

58877
11 15
10 8
4 5
8 4
9 1
3 6
5 2
4 11
3 6
11 5
5 2
9 6
1 5
5 7
5 9
8 4
1 1 1 1 1 1 1 1 1 1 1
6 11
3 4
6 1
1 3
6 1
2 6
1 2
6 2
2 1
3 6
4 5
1 3
2 4 3 2 4 4
12 21
3 10
9 10
4 6
12 10
7 8
5 9
11 9
5 8
4 6
4 9
8 2
10 3
3 4
7 6
1 2
1 8
6 12
8 5
3 1
6 4
12 8
5 2 1 4 3 5 3 1 4 6 5 1
10 9
10 7
3 2
1 4
7 ...

output:

Yes
1 1 1 1 1 1 1 1 1 1 1
No
No
No
No
Yes
1 1
No
No
No
Yes
1 1 1 1
No
No
No
No
No
No
Yes
1 1 1 1 1
No
Yes
1 1 1 1
No
No
Yes
1 1 1 2 2
No
No
No
No
Yes
1 1 1 1 1 1 1 1 1 1 1 1 1
No
No
Yes
1 1 1
No
No
No
No
Yes
1 1
No
Yes
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
No
No
No
No
No
No
No
No
No
No
Yes
1 1
No
No
No
No
N...

result:

ok ok (58877 test cases)

Test #5:

score: 0
Accepted
time: 193ms
memory: 4280kb

input:

50000
10 9
4 3
4 2
5 1
4 5
7 8
5 7
9 10
9 6
8 10
4 1 4 4 1 3 2 1 3 2
10 9
7 4
3 5
9 6
2 9
2 10
3 2
3 8
3 1
7 9
1 1 2 2 2 2 2 2 2 2
10 9
7 3
8 4
8 6
8 7
9 10
2 5
2 1
2 9
7 5
2 1 1 1 2 2 2 2 1 1
10 9
4 2
2 6
3 10
1 3
8 7
1 8
6 3
5 9
7 5
4 4 2 3 3 1 3 3 1 3
10 9
7 3
1 9
7 1
6 5
1 5
2 8
6 8
10 4
2 4
2 4...

output:

Yes
2 1 1 1 2 4 3 3 4 4
Yes
2 2 2 1 2 2 1 2 2 2
Yes
2 2 1 1 2 1 1 1 2 2
Yes
3 1 3 1 4 2 3 3 4 3
Yes
1 3 1 4 2 2 1 3 1 4
Yes
3 4 3 1 2 2 3 4 3 4
Yes
2 1 1 1 3 3 2 2 2 4
Yes
1 3 3 1 1 3 2 3 4 4
Yes
2 3 2 3 1 2 1 2 4 4
Yes
2 3 3 2 2 3 1 2 4 1
Yes
2 3 3 3 2 1 1 2 1 2
Yes
3 2 1 3 1 2 3 1 1 1
Yes
3 1 2 3 ...

result:

ok ok (50000 test cases)

Test #6:

score: 0
Accepted
time: 156ms
memory: 4128kb

input:

5000
100 99
98 18
13 98
12 13
76 12
76 68
74 80
74 58
76 80
38 21
69 38
46 69
50 67
46 50
46 78
80 67
90 93
88 99
90 60
90 88
21 90
53 96
53 87
99 96
11 42
81 85
81 11
87 85
37 3
17 37
17 26
11 3
95 8
95 15
95 59
3 15
32 24
62 40
7 62
7 32
59 7
51 25
51 56
100 51
41 100
41 86
62 25
14 84
14 16
100 1...

output:

Yes
16 16 7 20 15 15 9 8 19 16 6 1 1 11 8 11 7 1 16 16 3 20 17 9 10 7 16 20 14 13 14 9 18 20 17 16 7 3 15 9 10 6 19 14 14 3 14 19 16 3 10 14 5 20 13 10 15 2 8 4 17 9 16 20 18 20 3 1 3 15 20 17 14 2 15 1 17 3 20 2 6 17 16 11 6 10 5 4 20 4 19 13 4 20 8 5 20 1 4 10
Yes
4 2 1 5 2 1 2 10 4 6 7 5 10 8 7 5...

result:

ok ok (5000 test cases)

Test #7:

score: 0
Accepted
time: 149ms
memory: 4616kb

input:

500
1000 999
532 116
445 532
834 445
540 432
144 540
427 834
427 144
564 261
564 427
948 692
119 111
119 429
965 316
714 975
787 714
537 787
793 537
793 119
948 793
948 965
564 692
603 575
17 603
22 759
390 22
73 390
73 17
965 759
491 790
897 491
703 69
359 703
217 359
776 557
897 776
258 897
31 258...

output:

Yes
63 18 31 27 38 42 31 9 35 15 32 23 18 85 68 9 3 49 40 16 66 3 14 16 62 76 25 19 17 55 4 19 73 89 89 43 74 8 22 59 9 51 13 9 16 84 44 47 72 33 65 90 49 48 22 63 45 89 69 73 19 68 18 20 6 37 37 61 4 77 53 24 3 81 57 36 15 45 50 82 76 21 9 50 69 47 61 13 27 23 75 26 91 53 22 33 72 24 29 68 54 73 45...

result:

ok ok (500 test cases)

Test #8:

score: 0
Accepted
time: 171ms
memory: 7044kb

input:

50
10000 9999
1099 7770
5310 7861
9812 3314
1099 7799
392 5622
5651 107
3262 5651
9852 1099
9852 3216
392 8051
9128 392
1141 9128
3252 9812
8671 116
2438 8671
3252 2438
5310 3252
9852 5310
7830 9852
6225 7830
213 6225
3908 213
2062 3908
4787 2062
7726 4787
6412 7726
1141 6412
1141 3262
7933 1672
355...

output:

Yes
94 95 231 265 327 297 260 44 110 330 341 225 76 418 275 132 80 416 158 300 106 248 407 174 237 166 288 189 91 200 61 127 271 153 218 198 61 353 303 3 305 306 315 201 189 11 12 385 231 196 366 380 73 418 119 64 288 163 396 325 399 185 26 263 252 46 306 240 137 372 103 411 415 112 256 254 247 332 ...

result:

ok ok (50 test cases)

Test #9:

score: 0
Accepted
time: 209ms
memory: 31768kb

input:

5
100000 99999
22355 12278
45499 67169
41047 76472
29154 41047
79175 29756
13716 48445
97977 83078
76471 63792
40743 9183
56989 43002
45499 27278
7876 13808
94004 15967
99866 56989
40743 99866
80181 40743
12918 8224
74066 29378
20226 6878
7876 20226
55266 23568
22646 2272
13688 45499
39216 14695
740...

output:

Yes
1881 1113 1607 646 1074 387 427 1903 1052 125 90 670 891 793 260 1181 1461 217 291 278 291 318 1279 1214 990 552 268 1738 1440 14 996 967 1489 1890 49 1898 231 1863 493 1550 679 1672 768 996 309 287 1787 1873 174 794 271 1538 637 708 396 539 73 1525 100 1825 904 1319 1939 1100 1427 148 1405 1898...

result:

ok ok (5 test cases)

Test #10:

score: 0
Accepted
time: 162ms
memory: 4048kb

input:

50000
10 18
4 3
4 2
5 1
4 5
7 8
5 7
9 10
9 6
8 10
4 2
2 4
9 10
8 7
1 5
4 3
1 5
6 10
5 1
4 1 4 4 1 3 2 1 3 2
10 14
10 5
7 10
9 7
4 9
6 4
1 6
2 3
8 2
7 2
1 9
5 7
5 7
9 5
8 10
1 1 2 2 1 1 1 2 1 1
10 18
3 8
2 3
1 7
2 1
9 5
4 9
10 4
10 6
3 4
6 4
2 1
9 6
10 5
4 10
1 8
4 6
4 9
8 5
2 2 1 2 2 1 2 1 1 1
10 20...

output:

Yes
2 1 1 1 2 4 3 3 4 4
No
No
Yes
2 2 2 1 2 2 2 2 2 2
No
Yes
1 2 1 2 2 1 1 1 2 2
Yes
3 4 2 3 1 4 4 1 2 3
Yes
2 3 3 1 2 4 2 2 3 4
Yes
3 2 1 2 1 2 3 1 1 1
Yes
1 2 1 1 1 2 1 2 1 1
Yes
2 3 1 3 1 2 1 4 2 2
Yes
2 1 2 1 2 2 1 1 2 1
Yes
4 4 2 3 3 2 2 1 3 2
No
Yes
2 3 2 3 3 3 1 3 3 2
Yes
1 2 1 1 3 2 2 1 2 1
...

result:

ok ok (50000 test cases)

Test #11:

score: 0
Accepted
time: 120ms
memory: 4028kb

input:

5000
100 182
98 18
13 98
12 13
76 12
76 68
74 80
74 58
76 80
38 21
69 38
46 69
50 67
46 50
46 78
80 67
90 93
88 99
90 60
90 88
21 90
53 96
53 87
99 96
11 42
81 85
81 11
87 85
37 3
17 37
17 26
11 3
95 8
95 15
95 59
3 15
32 24
62 40
7 62
7 32
59 7
51 25
51 56
100 51
41 100
41 86
62 25
14 84
14 16
100 ...

output:

Yes
16 16 7 20 15 15 9 8 19 16 6 1 1 11 8 11 7 1 16 16 3 20 17 9 10 7 16 20 14 13 14 9 18 20 17 16 7 3 15 9 10 6 19 14 14 3 14 19 16 3 10 14 5 20 13 10 15 2 8 4 17 9 16 20 18 20 3 1 3 15 20 17 14 2 15 1 17 3 20 2 6 17 16 11 6 10 5 4 20 4 19 13 4 20 8 5 20 1 4 10
Yes
1 9 14 7 11 4 9 12 9 8 5 9 13 9 1...

result:

ok ok (5000 test cases)

Test #12:

score: 0
Accepted
time: 108ms
memory: 4432kb

input:

500
1000 1815
532 116
445 532
834 445
540 432
144 540
427 834
427 144
564 261
564 427
948 692
119 111
119 429
965 316
714 975
787 714
537 787
793 537
793 119
948 793
948 965
564 692
603 575
17 603
22 759
390 22
73 390
73 17
965 759
491 790
897 491
703 69
359 703
217 359
776 557
897 776
258 897
31 25...

output:

Yes
63 18 31 27 38 42 31 9 35 15 32 23 18 85 68 9 3 49 40 16 66 3 14 16 62 76 25 19 17 55 4 19 73 89 89 43 74 8 22 59 9 51 13 9 16 84 44 47 72 33 65 90 49 48 22 63 45 89 69 73 19 68 18 20 6 37 37 61 4 77 53 24 3 81 57 36 15 45 50 82 76 21 9 50 69 47 61 13 27 23 75 26 91 53 22 33 72 24 29 68 54 73 45...

result:

ok ok (500 test cases)

Test #13:

score: 0
Accepted
time: 124ms
memory: 6536kb

input:

50
10000 18147
1099 7770
5310 7861
9812 3314
1099 7799
392 5622
5651 107
3262 5651
9852 1099
9852 3216
392 8051
9128 392
1141 9128
3252 9812
8671 116
2438 8671
3252 2438
5310 3252
9852 5310
7830 9852
6225 7830
213 6225
3908 213
2062 3908
4787 2062
7726 4787
6412 7726
1141 6412
1141 3262
7933 1672
35...

output:

Yes
94 95 231 265 327 297 260 44 110 330 341 225 76 418 275 132 80 416 158 300 106 248 407 174 237 166 288 189 91 200 61 127 271 153 218 198 61 353 303 3 305 306 315 201 189 11 12 385 231 196 366 380 73 418 119 64 288 163 396 325 399 185 26 263 252 46 306 240 137 372 103 411 415 112 256 254 247 332 ...

result:

ok ok (50 test cases)

Test #14:

score: 0
Accepted
time: 211ms
memory: 23188kb

input:

5
100000 181474
22355 12278
45499 67169
41047 76472
29154 41047
79175 29756
13716 48445
97977 83078
76471 63792
40743 9183
56989 43002
45499 27278
7876 13808
94004 15967
99866 56989
40743 99866
80181 40743
12918 8224
74066 29378
20226 6878
7876 20226
55266 23568
22646 2272
13688 45499
39216 14695
74...

output:

Yes
1881 1113 1607 646 1074 387 427 1903 1052 125 90 670 891 793 260 1181 1461 217 291 278 291 318 1279 1214 990 552 268 1738 1440 14 996 967 1489 1890 49 1898 231 1863 493 1550 679 1672 768 996 309 287 1787 1873 174 794 271 1538 637 708 396 539 73 1525 100 1825 904 1319 1939 1100 1427 148 1405 1898...

result:

ok ok (5 test cases)

Test #15:

score: 0
Accepted
time: 153ms
memory: 3972kb

input:

50000
10 20
4 3
4 2
5 1
4 5
7 8
5 7
9 10
9 6
8 10
4 2
2 4
9 10
8 7
1 5
4 3
1 5
6 10
5 1
3 2
1 5
4 1 4 4 1 3 2 1 3 2
10 20
3 6
9 10
4 3
4 9
5 8
5 2
7 1
7 5
10 7
1 7
7 1
7 1
3 6
1 5
1 7
4 10
4 10
8 2
10 4
5 1
1 2 1 1 1 2 2 2 2 1
10 20
7 4
3 7
6 2
4 6
9 10
9 8
5 9
5 1
6 5
5 1
10 9
8 10
5 1
7 3
8 10
1 5...

output:

Yes
2 1 1 1 2 4 3 3 4 4
Yes
1 1 2 2 1 2 1 1 2 2
Yes
3 4 4 4 3 4 4 2 2 2
Yes
1 3 3 2 1 2 2 2 3 1
Yes
2 3 2 3 1 2 1 2 4 4
Yes
1 2 2 2 1 4 4 1 1 4
Yes
3 1 2 4 4 1 2 2 2 3
Yes
1 2 1 2 1 1 1 1 2 2
Yes
2 2 1 1 1 3 2 2 1 2
Yes
2 3 1 2 2 3 2 3 1 1
Yes
1 1 3 3 1 1 2 2 1 2
Yes
1 3 1 2 2 2 2 1 2 3
Yes
1 1 2 2 ...

result:

ok ok (50000 test cases)

Test #16:

score: 0
Accepted
time: 119ms
memory: 4112kb

input:

5000
100 200
98 18
13 98
12 13
76 12
76 68
74 80
74 58
76 80
38 21
69 38
46 69
50 67
46 50
46 78
80 67
90 93
88 99
90 60
90 88
21 90
53 96
53 87
99 96
11 42
81 85
81 11
87 85
37 3
17 37
17 26
11 3
95 8
95 15
95 59
3 15
32 24
62 40
7 62
7 32
59 7
51 25
51 56
100 51
41 100
41 86
62 25
14 84
14 16
100 ...

output:

Yes
16 16 7 20 15 15 9 8 19 16 6 1 1 11 8 11 7 1 16 16 3 20 17 9 10 7 16 20 14 13 14 9 18 20 17 16 7 3 15 9 10 6 19 14 14 3 14 19 16 3 10 14 5 20 13 10 15 2 8 4 17 9 16 20 18 20 3 1 3 15 20 17 14 2 15 1 17 3 20 2 6 17 16 11 6 10 5 4 20 4 19 13 4 20 8 5 20 1 4 10
Yes
3 3 6 2 6 2 4 4 1 7 5 1 2 6 1 3 5...

result:

ok ok (5000 test cases)

Test #17:

score: 0
Accepted
time: 113ms
memory: 4716kb

input:

500
1000 2000
532 116
445 532
834 445
540 432
144 540
427 834
427 144
564 261
564 427
948 692
119 111
119 429
965 316
714 975
787 714
537 787
793 537
793 119
948 793
948 965
564 692
603 575
17 603
22 759
390 22
73 390
73 17
965 759
491 790
897 491
703 69
359 703
217 359
776 557
897 776
258 897
31 25...

output:

Yes
63 18 31 27 38 42 31 9 35 15 32 23 18 85 68 9 3 49 40 16 66 3 14 16 62 76 25 19 17 55 4 19 73 89 89 43 74 8 22 59 9 51 13 9 16 84 44 47 72 33 65 90 49 48 22 63 45 89 69 73 19 68 18 20 6 37 37 61 4 77 53 24 3 81 57 36 15 45 50 82 76 21 9 50 69 47 61 13 27 23 75 26 91 53 22 33 72 24 29 68 54 73 45...

result:

ok ok (500 test cases)

Test #18:

score: 0
Accepted
time: 131ms
memory: 5544kb

input:

50
10000 20000
1099 7770
5310 7861
9812 3314
1099 7799
392 5622
5651 107
3262 5651
9852 1099
9852 3216
392 8051
9128 392
1141 9128
3252 9812
8671 116
2438 8671
3252 2438
5310 3252
9852 5310
7830 9852
6225 7830
213 6225
3908 213
2062 3908
4787 2062
7726 4787
6412 7726
1141 6412
1141 3262
7933 1672
35...

output:

Yes
94 95 231 265 327 297 260 44 110 330 341 225 76 418 275 132 80 416 158 300 106 248 407 174 237 166 288 189 91 200 61 127 271 153 218 198 61 353 303 3 305 306 315 201 189 11 12 385 231 196 366 380 73 418 119 64 288 163 396 325 399 185 26 263 252 46 306 240 137 372 103 411 415 112 256 254 247 332 ...

result:

ok ok (50 test cases)

Test #19:

score: 0
Accepted
time: 254ms
memory: 22180kb

input:

5
100000 200000
22355 12278
45499 67169
41047 76472
29154 41047
79175 29756
13716 48445
97977 83078
76471 63792
40743 9183
56989 43002
45499 27278
7876 13808
94004 15967
99866 56989
40743 99866
80181 40743
12918 8224
74066 29378
20226 6878
7876 20226
55266 23568
22646 2272
13688 45499
39216 14695
74...

output:

Yes
1881 1113 1607 646 1074 387 427 1903 1052 125 90 670 891 793 260 1181 1461 217 291 278 291 318 1279 1214 990 552 268 1738 1440 14 996 967 1489 1890 49 1898 231 1863 493 1550 679 1672 768 996 309 287 1787 1873 174 794 271 1538 637 708 396 539 73 1525 100 1825 904 1319 1939 1100 1427 148 1405 1898...

result:

ok ok (5 test cases)

Test #20:

score: 0
Accepted
time: 150ms
memory: 3920kb

input:

100000
2 1
2 1
1 1
3 2
1 2
3 1
1 2 1
5 4
1 2
4 5
5 1
3 5
2 2 1 1 2
5 4
1 3
3 2
3 4
1 5
1 2 1 2 1
5 4
5 4
2 1
2 5
5 3
1 2 2 1 1
5 4
4 1
3 5
2 3
2 1
2 1 2 1 2
3 2
1 2
3 2
2 1 2
3 2
3 1
3 2
2 2 1
2 1
2 1
1 2
5 4
2 4
4 1
2 3
4 5
2 1 1 1 1
3 2
1 2
2 3
2 1 1
2 1
2 1
1 1
2 1
2 1
1 1
4 3
4 2
4 3
1 4
2 1 1 2...

output:

Yes
1 1
Yes
1 1 2
Yes
1 1 2 2 2
Yes
2 1 1 1 2
Yes
2 2 1 1 1
Yes
1 2 2 1 2
Yes
1 2 2
Yes
1 2 2
Yes
1 2
Yes
1 1 1 1 2
Yes
1 1 2
Yes
1 1
Yes
1 1
No
Yes
1 2 1
Yes
1 2 1
Yes
1 2 1
Yes
1 1
Yes
1 2 1
Yes
1 1 2 2 2
Yes
1 2 2 1
Yes
1 2
Yes
1 2 2 1
Yes
2 2 1
Yes
1 1 2
Yes
1 2
Yes
2 1 1 1 2
Yes
1 2
Yes
1 1
Yes...

result:

ok ok (100000 test cases)

Test #21:

score: 0
Accepted
time: 206ms
memory: 4032kb

input:

83461
4 3
3 2
1 3
3 4
1 2 2 2
2 1
2 1
1 2
6 5
5 6
3 1
5 2
3 6
6 4
1 2 2 1 1 2
7 6
3 4
1 3
7 4
6 2
2 4
3 5
1 1 1 1 1 2 1
9 8
2 1
6 8
9 4
5 9
3 5
6 9
2 9
4 7
2 2 2 1 2 1 2 2 1
8 7
1 6
7 3
2 6
3 4
5 8
5 1
3 5
2 1 1 2 1 2 2 2
2 1
2 1
1 2
2 1
2 1
1 2
2 1
1 2
1 1
8 7
7 3
2 5
7 8
5 8
5 4
6 1
6 2
1 1 1 2 1 ...

output:

Yes
2 1 2 2
Yes
1 2
No
Yes
1 1 1 1 2 1 1
No
Yes
1 1 2 2 2 1 2 2
Yes
1 2
Yes
1 2
Yes
1 1
Yes
1 1 2 1 1 1 2 1
Yes
1 2 2 2 1
Yes
1 1 1 2 1 1 2 1 1 1
Yes
1 1 2 1 1 2 1 2 2 1
Yes
1 1 1 1 1 2 1 2 1 1
Yes
1 2 1 2 2 2 1 1 1 1
Yes
1 1 2 1 2 2
Yes
1 1 2 1 2 2 2 2
Yes
2 1 1 2 2 1 1
Yes
1 1 2 2 2 2 1 2
Yes
1 2 ...

result:

ok ok (83461 test cases)

Test #22:

score: 0
Accepted
time: 142ms
memory: 4040kb

input:

9844
37 36
24 30
13 6
3 22
28 15
6 32
37 22
12 33
23 19
18 32
16 13
12 27
5 1
22 23
31 2
37 18
26 24
22 20
9 2
11 35
35 25
16 8
29 32
21 33
10 13
27 31
25 18
17 27
20 14
21 29
31 7
26 1
26 19
12 15
34 3
4 27
36 7
1 1 1 1 2 2 1 2 1 2 1 1 2 1 1 1 2 2 2 2 2 1 2 2 2 2 1 2 1 1 2 1 1 1 2 2 2
52 51
17 38
3...

output:

No
Yes
2 1 2 2 2 1 1 1 1 1 2 1 2 2 2 1 2 2 1 2 1 2 1 1 2 1 1 1 1 1 2 2 2 2 1 2 1 2 2 1 1 1 2 2 1 2 2 1 2 1 2 1
No
No
Yes
1 2 1 2 2 2 1 1 1 2 2 1 1 2 1 2 1 2 1 2 2 1 1 2 1 1 2 2 2 1 2 1 2 2 1 1 1 1 1 2 1 2 1 1 1 2 1 1 2 2 1 1 1 1 1 1 2 2 2 2 1 2 2 2 1 1 1 1 1 1 2 2 2 2 2 1 2 2 2 1 2 1 2 2 1 1 1 2 2 1...

result:

ok ok (9844 test cases)

Test #23:

score: 0
Accepted
time: 113ms
memory: 4628kb

input:

1018
608 607
48 591
364 115
340 236
175 115
506 470
511 105
242 136
119 70
464 246
505 286
114 405
453 514
330 250
337 96
157 563
421 189
51 217
503 336
604 573
341 297
281 241
402 250
446 22
100 447
301 261
58 342
520 310
40 96
224 477
104 430
210 536
434 387
340 137
145 456
558 539
355 214
322 524...

output:

No
No
No
No
No
No
Yes
2 2 1 2 1 2 1 1 1 1 1 1 2 1 2 2 2 1 2 1 1 2 2 2 1 1 2 1 1 2 1 1 1 2 2 1 1 1 1 1 1 2 1 2 2 1 1 2 1 1 2 2 2 2 2 1 2 2 1 1 2 1 2 1 2 2 1 1 1 2 2 1 2 2 2 2 2 2 2 1 2 2 1 2 2 2 1 1 2 1 2 1 1 2 2 1 2 2 2 2 2 2 1 1 2 2 1 2 1 1 2 2 1 2 1 1 2 2 1 2 2 2 2 1 2 1 2 1 2 1 1 1 1 1 2 2 2 2 2 ...

result:

ok ok (1018 test cases)

Test #24:

score: 0
Accepted
time: 120ms
memory: 5892kb

input:

87
5513 5512
1067 4346
3664 1879
771 4934
2611 3655
4151 663
1723 5228
4932 1932
2935 3224
3491 4583
3524 5446
4245 2617
371 4714
4068 1582
2649 642
2409 572
1963 792
1840 2762
2858 3580
2796 2653
1156 2745
967 3252
2410 1145
907 1061
4411 4465
5164 4754
3730 233
3306 4332
5337 2593
1369 4185
4755 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
Yes
2 2 1 2 1
No
No
No
No
No
No
No
No
No
No
No
No
No
No
Yes
2 1 2 2 1 2 2 1 1 2 2 2 1 1 1 2 2 2 2 1 2 1 2 2 2 1 2 1 1 2 1 1 1 2 1 1 1 1 2 1 1 1 1 1 1 2 2...

result:

ok ok (87 test cases)

Test #25:

score: 0
Accepted
time: 69ms
memory: 4316kb

input:

5000
100 99
42 90
90 80
15 90
81 90
43 94
90 6
90 70
90 9
90 61
22 90
90 36
90 83
90 18
53 90
90 16
90 55
90 100
2 90
65 90
90 10
12 90
90 77
90 98
92 90
58 50
24 90
90 8
43 31
90 74
14 90
90 75
33 90
28 90
71 90
78 90
90 13
11 35
95 90
11 29
39 90
90 76
82 90
56 90
90 52
90 91
85 31
47 90
50 35
20 ...

output:

No
Yes
56 56 56 56 56 56 3 93 56 56 56 56 56 56 56 56 56 56 56 56 56 3 93 3 56 56 3 56 56 56 56 56 56 3 56 56 56 56 56 56 56 56 56 3 56 56 3 3 56 56 56 56 56 56 56 56 56 56 56 56 56 56 93 93 56 56 56 56 56 3 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 3 56 56 93 56 56 56 56
No
...

result:

ok ok (5000 test cases)

Test #26:

score: 0
Accepted
time: 69ms
memory: 4240kb

input:

500
1000 999
758 157
157 380
560 157
512 157
584 157
157 784
896 157
139 157
768 157
849 157
895 157
157 369
782 157
263 157
157 785
607 157
773 157
813 157
157 172
135 157
157 970
157 772
328 157
157 92
461 157
641 157
157 250
157 376
157 355
157 876
157 845
667 157
556 157
157 412
157 490
884 157
...

output:

No
Yes
607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 911 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 607 6...

result:

ok ok (500 test cases)

Test #27:

score: 0
Accepted
time: 63ms
memory: 6700kb

input:

50
10000 9999
9684 8718
9684 5169
9595 9684
9684 6820
9476 9684
9684 968
1131 9684
5774 9684
8644 9684
9684 1878
9361 9684
9684 2733
2270 9684
6268 9684
9684 1129
9684 771
2827 9684
9684 1510
8937 9684
2055 9684
9684 9564
9684 41
9684 476
9684 6727
2441 9684
9684 8390
9684 1176
5715 9684
4194 9684
9...

output:

Yes
1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 8141 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1464 1...

result:

ok ok (50 test cases)

Test #28:

score: 0
Accepted
time: 71ms
memory: 32788kb

input:

5
100000 99999
20424 54074
54074 826
29805 54074
54074 64403
72518 54074
54074 68167
92728 54074
54074 86229
81267 54074
54074 62831
13080 54074
52946 54074
54074 18247
54074 1903
73633 54074
54074 36210
3991 54074
54074 22828
42978 54074
96146 54074
54074 27955
54074 75840
24035 54074
54074 83445
5...

output:

No
Yes
16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408 16408...

result:

ok ok (5 test cases)

Test #29:

score: 0
Accepted
time: 220ms
memory: 3984kb

input:

100000
5 4
5 1
2 3
5 3
2 4
1 5 4 2 3
5 4
2 5
1 3
1 5
4 3
1 5 4 3 1
5 4
1 4
4 3
5 1
2 3
5 1 1 3 1
5 4
2 3
5 4
1 5
1 2
3 4 2 5 3
5 4
1 4
2 4
5 3
5 2
5 4 5 4 2
5 4
3 2
1 3
4 2
1 5
4 1 3 1 1
5 4
2 1
2 5
3 5
4 3
2 2 1 5 5
5 4
2 1
4 2
3 4
1 5
4 5 4 5 5
5 4
3 4
2 5
1 2
1 4
2 3 4 2 3
5 4
3 1
3 2
1 4
5 2
2 1...

output:

Yes
1 4 3 5 2
Yes
3 5 1 1 4
Yes
3 1 1 1 5
Yes
3 4 5 2 3
Yes
2 4 5 4 5
Yes
3 1 1 1 4
Yes
1 2 5 5 2
Yes
5 5 4 4 5
Yes
3 2 4 3 2
Yes
3 1 2 5 1
Yes
4 4 1 4 4
Yes
5 5 3 1 1
Yes
1 4 4 5 2
Yes
4 3 5 5 3
Yes
3 5 2 4 2
Yes
2 5 2 3 3
Yes
1 4 1 3 5
Yes
1 3 5 1 1
Yes
1 2 5 1 3
Yes
1 2 2 3 5
Yes
5 5 5 2 2
Yes
1 ...

result:

ok ok (100000 test cases)

Test #30:

score: 0
Accepted
time: 210ms
memory: 3988kb

input:

50000
10 9
5 9
5 7
1 3
4 10
2 6
8 7
1 2
3 9
4 6
2 6 2 10 9 7 5 1 9 4
10 9
4 10
7 10
5 9
4 2
1 7
8 1
3 6
5 6
3 8
9 4 10 6 5 4 6 3 9 7
10 9
3 2
1 9
4 7
6 5
6 10
1 8
3 4
9 2
10 8
2 10 3 4 1 5 9 9 5 5
10 9
5 6
3 7
1 4
2 8
6 1
4 10
7 5
9 8
2 10
7 6 9 1 7 8 7 5 4 4
10 9
5 10
4 7
10 1
6 4
3 6
5 8
9 8
2 7
1...

output:

Yes
6 7 5 9 2 9 2 1 4 10
Yes
6 3 7 4 9 9 5 6 10 4
Yes
5 4 3 2 10 9 1 5 5 9
Yes
7 4 9 6 7 7 8 4 1 5
Yes
6 10 7 9 4 7 10 2 1 6
Yes
4 10 2 8 7 2 9 9 1 5
Yes
4 4 3 4 9 8 6 4 6 1
Yes
2 7 2 9 1 10 8 6 10 1
Yes
7 9 10 7 1 9 7 3 6 3
Yes
1 4 9 9 6 10 7 7 9 7
Yes
3 1 6 3 8 6 9 5 1 1
Yes
6 10 9 10 9 7 10 2 4 1...

result:

ok ok (50000 test cases)

Test #31:

score: 0
Accepted
time: 237ms
memory: 4352kb

input:

5000
100 99
79 67
26 83
7 10
90 97
16 18
49 62
70 30
44 47
70 52
68 48
9 18
21 96
19 6
99 62
31 40
96 43
50 46
60 36
32 5
95 38
3 34
86 64
59 42
88 12
27 19
75 40
10 21
25 81
24 91
15 78
6 81
66 3
55 2
69 66
42 87
14 95
99 2
73 79
39 56
76 78
80 77
24 36
74 32
28 48
90 94
13 89
35 63
1 4
100 64
20 5...

output:

Yes
93 83 33 91 42 65 100 66 52 100 94 36 23 22 55 54 72 53 65 58 99 2 77 50 66 3 63 97 90 75 19 42 7 32 39 49 62 21 57 19 72 69 98 30 60 62 31 96 84 61 97 77 15 58 82 57 70 60 69 44 7 84 40 29 42 33 10 95 34 75 91 74 7 40 19 56 11 55 9 13 65 15 4 42 88 28 66 35 24 55 51 25 72 54 22 98 55 93 84 30
Y...

result:

ok ok (5000 test cases)

Test #32:

score: 0
Accepted
time: 258ms
memory: 4560kb

input:

500
1000 999
683 508
513 98
140 785
613 8
128 691
43 37
979 180
270 227
648 203
124 446
876 124
558 23
666 934
472 703
808 24
999 64
239 64
544 284
91 190
328 741
675 498
548 29
594 634
106 554
287 231
872 891
802 136
898 646
395 164
324 426
562 272
837 182
425 797
691 779
736 443
405 288
176 321
74...

output:

Yes
253 985 772 782 333 467 7 942 113 284 624 440 827 511 735 271 963 113 670 533 203 611 552 896 745 44 694 681 326 85 228 931 15 98 815 5 602 998 691 492 250 485 600 617 247 413 445 831 99 557 909 415 164 794 944 440 128 683 681 534 471 200 18 122 772 432 242 366 270 657 840 18 416 562 625 775 404...

result:

ok ok (500 test cases)

Test #33:

score: 0
Accepted
time: 287ms
memory: 8604kb

input:

50
10000 9999
9637 8572
7031 5112
3079 1374
2344 778
4133 6047
1956 8298
9108 8664
6385 2668
6259 2037
2973 520
1994 3513
2073 5633
5048 7941
8585 563
9890 7835
4157 1320
6870 5096
8472 9439
5608 5845
2669 9670
9453 9764
7138 2800
1952 4136
8586 1600
151 3415
3168 2873
5874 2038
6037 1287
1922 9329
...

output:

Yes
3520 9167 5630 7898 5084 642 4182 9189 7361 4380 7582 2915 4728 9078 1506 5298 5932 6919 119 6155 7088 4671 2377 9561 9354 1216 8223 8452 9015 136 6873 9836 9021 6830 520 1804 6817 9539 3319 4247 5642 1794 1302 8663 5491 8126 6705 5918 9309 3321 7029 447 262 9450 2043 7043 9064 3791 5788 1627 60...

result:

ok ok (50 test cases)

Test #34:

score: 0
Accepted
time: 385ms
memory: 51328kb

input:

5
100000 99999
43561 63383
6723 36002
56906 49405
87795 27838
17049 80864
12016 19662
63514 14364
12523 36574
87618 10650
41589 64362
56354 98915
24876 4283
83443 13573
45524 57667
62580 39064
88873 34690
7098 9024
50768 81026
48266 16280
68435 22863
28186 74660
49511 28449
35015 30939
38574 10988
5...

output:

Yes
30208 25533 35841 75812 89385 55277 12581 68022 21357 86652 14824 3386 10972 84434 2078 49744 15165 67446 37850 94036 31128 22498 10480 37592 69900 31964 345 22090 72660 45102 4335 25363 76683 51015 97000 1182 63863 35678 1295 92418 76937 27710 43837 93084 26963 37902 53998 5833 40293 66354 8668...

result:

ok ok (5 test cases)

Extra Test:

score: 0
Extra Test Passed