QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#853223#9733. Heavy-light Decompositionucup-team5243#AC ✓38ms6728kbC++2316.1kb2025-01-11 16:11:512025-01-11 16:11:57

Judging History

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

  • [2025-01-11 16:11:57]
  • 评测
  • 测评结果:AC
  • 用时:38ms
  • 内存:6728kb
  • [2025-01-11 16:11:51]
  • 提交

answer

//line 1 "answer.cpp"
#if !__INCLUDE_LEVEL__
#include __FILE__
const string IMPOSSIBLE = "IMPOSSIBLE";
int solve() {
    ll n,k; input(n, k);
    vector<pll> p;
    rep(i, k) {
        ll l, r; input(l, r);
        p.emplace_back(l-1, r);
    }
    sort(all(p));
    if (p[0].first != 0) {return print(IMPOSSIBLE);}
    if (p[k-1].second != n) {return print(IMPOSSIBLE);}
    rep(i, k-1) {
        auto [l1, r1] = p[i];
        auto [l2, r2] = p[i+1];
        debug(l1, r1, l2, r2);
        if (r1 != l2) {return print(IMPOSSIBLE);}
    }
    debug("first check");
    ll mx = -INFL;
    ll id = -1;
    ll cnt = 0;
    rep(i, k) {
        auto [l, r] = p[i];
        if (chmax(mx, r-l)) {
            id = i;
            cnt = 0;
        }
        if ((r - l) == mx) cnt++;
    }
    if (cnt == 1) {
        ll root = p[id].first;
        vl ans(n);
        rep(i, k) {
            auto [l, r] = p[i];
            if (i == id) ans[l] = 0;
            else ans[l] = root + 1;
            rep(j, l+1, r) {
                ans[j] = j;
            }
        }
        return print(ans);
    }
    auto check = [&] () -> bool {
        rep(i, k) {
            auto [l, r] = p[i];
            if (r - l <= mx - 2) return true;
        }
        return false;
    };
    if (!check()) {return print(IMPOSSIBLE);}
    ll root = p[id].first;
    vl ans(n);
    rep(i, k) {
        auto [l, r] = p[i];
        if (i == id) ans[l] = 0;
        else if (r - l >= mx - 1) ans[l] = root + 1;
        else ans[l] = root + 2;
        rep(j, l+1, r) { ans[j] = j; }
    }
    return print(ans);
}
int main() {
    ll t; input(t);
    rep(t) solve();
}
#else
//line 2 "/home/seekworser/.cpp_lib/competitive_library/competitive/std/std.hpp"
#include <bits/stdc++.h>
#ifndef LOCAL_TEST
#pragma GCC target ("avx")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#endif // LOCAL_TEST
using namespace std;
// 型名の短縮
using ll = long long;
using pii = pair<int, int>; using pll = pair<ll, ll>;
using vi = vector<int>;  using vvi = vector<vi>; using vvvi = vector<vvi>;
using vl = vector<ll>;  using vvl = vector<vl>; using vvvl = vector<vvl>;
using vb = vector<bool>; using vvb = vector<vb>; using vvvb = vector<vvb>;
using vc = vector<char>; using vvc = vector<vc>; using vvvc = vector<vvc>;
using vd = vector<double>; using vvd = vector<vd>; using vvvd = vector<vvd>;
using vs = vector<string>; using vvs = vector<vector<string>>; using vvvs = vector<vector<vector<string>>>;
template<typename T> vector<vector<T>> vv(int h, int w, T val = T()) { return vector(h, vector<T>(w, val)); }
template<typename T> vector<vector<vector<T>>> vvv(int h1, int h2, int h3, T val = T()) { return vector(h1, vector(h2, vector<T>(h3, val))); }
template<typename T> vector<vector<vector<vector<T>>>> vvvv(int h1, int h2, int h3, int h4, T val = T()) { return vector(h1, vector(h2, vector(h3, vector<T>(h4, val)))); }
template <class T> using priority_queue_min = priority_queue<T, vector<T>, greater<T>>;
// 定数の定義
constexpr double PI = 3.14159265358979323;
constexpr int INF = 100100111; constexpr ll INFL = 3300300300300300491LL;
float EPS = 1e-8; double EPSL = 1e-16;
template<typename T> bool eq(const T x, const T y) { return x == y; }
template<> bool eq<double>(const double x, const double y) { return abs(x - y) < EPSL; }
template<> bool eq<float>(const float x, const float y) { return abs(x - y) < EPS; }
template<typename T> bool neq(const T x, const T y) { return !(eq<T>(x, y)); }
template<typename T> bool ge(const T x, const T y) { return (eq<T>(x, y) || (x > y)); }
template<typename T> bool le(const T x, const T y) { return (eq<T>(x, y) || (x < y)); }
template<typename T> bool gt(const T x, const T y) { return !(le<T>(x, y)); }
template<typename T> bool lt(const T x, const T y) { return !(ge<T>(x, y)); }
constexpr int MODINT998244353 = 998244353;
constexpr int MODINT1000000007 = 1000000007;
// 入出力高速化
struct Nyan { Nyan() { cin.tie(nullptr); ios::sync_with_stdio(false); cout << fixed << setprecision(18); } } nyan;
// 汎用マクロの定義
#define all(a) (a).begin(), (a).end()
#define sz(x) ((ll)(x).size())
#define rep1(n) for(ll dummy_iter = 0LL; dummy_iter < n; ++dummy_iter) // 0 から n-1 まで昇順
#define rep2(i, n) for(ll i = 0LL, i##_counter = 0LL; i##_counter < ll(n); ++(i##_counter), (i) = i##_counter) // 0 から n-1 まで昇順
#define rep3(i, s, t) for(ll i = ll(s), i##_counter = ll(s); i##_counter < ll(t); ++(i##_counter), (i) = (i##_counter)) // s から t まで昇順
#define rep4(i, s, t, step) for(ll i##_counter = step > 0 ? ll(s) : -ll(s), i##_end = step > 0 ? ll(t) : -ll(t), i##_step = abs(step), i = ll(s); i##_counter < i##_end; i##_counter += i##_step, i = step > 0 ? i##_counter : -i##_counter) // s から t まで stepずつ
#define overload4(a, b, c, d, e, ...) e
#define rep(...) overload4(__VA_ARGS__, rep4, rep3, rep2, rep1)(__VA_ARGS__)
#define repe(a, v) for(auto& a : (v)) // v の全要素(変更可能)
#define smod(n, m) ((((n) % (m)) + (m)) % (m)) // 非負mod
#define sdiv(n, m) (((n) - smod(n, m)) / (m)) // 非負div
#define uniq(a) {sort(all(a)); (a).erase(unique(all(a)), (a).end());} // 重複除去
int Yes(bool b=true) { cout << (b ? "Yes\n" : "No\n"); return 0; };
int YES(bool b=true) { cout << (b ? "YES\n" : "NO\n"); return 0; };
int No(bool b=true) {return Yes(!b);};
int NO(bool b=true) {return YES(!b);};
template<typename T, size_t N> T max(array<T, N>& a) { return *max_element(all(a)); };
template<typename T, size_t N> T min(array<T, N>& a) { return *min_element(all(a)); };
template<typename T> T max(vector<T>& a) { return *max_element(all(a)); };
template<typename T> T min(vector<T>& a) { return *min_element(all(a)); };
template<typename T> vector<T> accum(const vector<T>& a) { vector<T> rev(sz(a)+1, 0); rep(i, sz(a)) rev[i+1] = rev[i] + a[i]; return rev; };
template<typename T> vector<T> vec_slice(const vector<T>& a, int l, int r) { vector<T> rev; rep(i, l, r) rev.push_back(a[i]); return rev; };
template<typename T> T sum(vector<T>& a, T zero = T(0)) { T rev = zero; rep(i, sz(a)) rev += a[i]; return rev; };
template<typename T> bool in_range(const T& val, const T& s, const T& t) { return s <= val && val < t; };

template <class T> inline vector<T>& operator--(vector<T>& v) { repe(x, v) --x; return v; }
template <class T> inline vector<T>& operator++(vector<T>& v) { repe(x, v) ++x; return v; }

// modでのpow
ll powm(ll a, ll n, ll mod=INFL) {
    ll res = 1;
    while (n > 0) {
        if (n & 1) res = (res * a) % mod;
        if (n > 1) a = (a * a) % mod;
        n >>= 1;
    }
    return res;
}
// 整数Sqrt
ll sqrtll(ll x) {
    assert(x >= 0);
    ll rev = sqrt(x);
    while(rev * rev > x) --rev;
    while((rev+1) * (rev+1)<=x) ++rev;
    return rev;
}
template <class T> inline bool chmax(T& M, const T& x) { if (M < x) { M = x; return true; } return false; } // 最大値を更新(更新されたら true を返す)
template <class T> inline bool chmin(T& m, const T& x) { if (m > x) { m = x; return true; } return false; } // 最小値を更新(更新されたら true を返す)
int digit(ll x, int d=10) { int rev=0; while (x > 0) { rev++; x /= d;}; return rev; } // xのd進数桁数
/**
 * @brief std.hpp
 * @docs docs/std/std.md
 */
//line 5 "/home/seekworser/.cpp_lib/competitive_library/atcoder/scc.hpp"

//line 5 "/home/seekworser/.cpp_lib/competitive_library/atcoder/internal_scc.hpp"

//line 5 "/home/seekworser/.cpp_lib/competitive_library/atcoder/internal_csr.hpp"

namespace atcoder {
namespace internal {

template <class E> struct csr {
    std::vector<int> start;
    std::vector<E> elist;
    explicit csr(int n, const std::vector<std::pair<int, E>>& edges)
        : start(n + 1), elist(edges.size()) {
        for (auto e : edges) {
            start[e.first + 1]++;
        }
        for (int i = 1; i <= n; i++) {
            start[i] += start[i - 1];
        }
        auto counter = start;
        for (auto e : edges) {
            elist[counter[e.first]++] = e.second;
        }
    }
};

}  // namespace internal

}  // namespace atcoder
//line 7 "/home/seekworser/.cpp_lib/competitive_library/atcoder/internal_scc.hpp"

namespace atcoder {
namespace internal {

// Reference:
// R. Tarjan,
// Depth-First Search and Linear Graph Algorithms
struct scc_graph {
  public:
    explicit scc_graph(int n) : _n(n) {}

    int num_vertices() { return _n; }

    void add_edge(int from, int to) { edges.push_back({from, {to}}); }

    // @return pair of (# of scc, scc id)
    std::pair<int, std::vector<int>> scc_ids() {
        auto g = csr<edge>(_n, edges);
        int now_ord = 0, group_num = 0;
        std::vector<int> visited, low(_n), ord(_n, -1), ids(_n);
        visited.reserve(_n);
        auto dfs = [&](auto self, int v) -> void {
            low[v] = ord[v] = now_ord++;
            visited.push_back(v);
            for (int i = g.start[v]; i < g.start[v + 1]; i++) {
                auto to = g.elist[i].to;
                if (ord[to] == -1) {
                    self(self, to);
                    low[v] = std::min(low[v], low[to]);
                } else {
                    low[v] = std::min(low[v], ord[to]);
                }
            }
            if (low[v] == ord[v]) {
                while (true) {
                    int u = visited.back();
                    visited.pop_back();
                    ord[u] = _n;
                    ids[u] = group_num;
                    if (u == v) break;
                }
                group_num++;
            }
        };
        for (int i = 0; i < _n; i++) {
            if (ord[i] == -1) dfs(dfs, i);
        }
        for (auto& x : ids) {
            x = group_num - 1 - x;
        }
        return {group_num, ids};
    }

    std::vector<std::vector<int>> scc() {
        auto ids = scc_ids();
        int group_num = ids.first;
        std::vector<int> counts(group_num);
        for (auto x : ids.second) counts[x]++;
        std::vector<std::vector<int>> groups(ids.first);
        for (int i = 0; i < group_num; i++) {
            groups[i].reserve(counts[i]);
        }
        for (int i = 0; i < _n; i++) {
            groups[ids.second[i]].push_back(i);
        }
        return groups;
    }

  private:
    int _n;
    struct edge {
        int to;
    };
    std::vector<std::pair<int, edge>> edges;
};

}  // namespace internal

}  // namespace atcoder
//line 7 "/home/seekworser/.cpp_lib/competitive_library/atcoder/scc.hpp"

namespace atcoder {

struct scc_graph {
  public:
    scc_graph() : internal(0) {}
    explicit scc_graph(int n) : internal(n) {}

    void add_edge(int from, int to) {
        int n = internal.num_vertices();
        assert(0 <= from && from < n);
        assert(0 <= to && to < n);
        internal.add_edge(from, to);
    }

    std::vector<std::vector<int>> scc() { return internal.scc(); }

  private:
    internal::scc_graph internal;
};

}  // namespace atcoder
//line 3 "/home/seekworser/.cpp_lib/competitive_library/competitive/std/io.hpp"
// 演算子オーバーロード(プロトタイプ宣言)
template <class T, class U> inline istream& operator>>(istream& is, pair<T, U>& p);
template <class T> inline istream& operator>>(istream& is, vector<T>& v);
template <class T, class U> inline ostream& operator<<(ostream& os, const pair<T, U>& p);
template <class T> inline ostream& operator<<(ostream& os, const vector<T>& v);
template <typename T, typename S> ostream &operator<<(ostream &os, const map<T, S> &mp);
template <typename T> ostream &operator<<(ostream &os, const set<T> &st);
template <typename T> ostream &operator<<(ostream &os, const multiset<T> &st);
template <typename T> ostream &operator<<(ostream &os, const unordered_set<T> &st);
template <typename T> ostream &operator<<(ostream &os, queue<T> q);
template <typename T> ostream &operator<<(ostream &os, deque<T> q);
template <typename T> ostream &operator<<(ostream &os, stack<T> st);
template <class T, class Container, class Compare> ostream &operator<<(ostream &os, priority_queue<T, Container, Compare> pq);

// 演算子オーバーロード
template <class T, class U> inline istream& operator>>(istream& is, pair<T, U>& p) { is >> p.first >> p.second; return is; }
template <class T> inline istream& operator>>(istream& is, vector<T>& v) { repe(x, v) is >> x; return is; }
template <class T, class U> inline ostream& operator<<(ostream& os, const pair<T, U>& p) { os << p.first << " " << p.second; return os; }
template <class T> inline ostream& operator<<(ostream& os, const vector<T>& v) { rep(i, sz(v)) { os << v.at(i); if (i != sz(v) - 1) os << " "; } return os; }
template <typename T, typename S> ostream &operator<<(ostream &os, const map<T, S> &mp) { for (auto &[key, val] : mp) { os << key << ":" << val << " "; } return os; }
template <typename T> ostream &operator<<(ostream &os, const set<T> &st) { auto itr = st.begin(); for (int i = 0; i < (int)st.size(); i++) { os << *itr << (i + 1 != (int)st.size() ? " " : ""); itr++; } return os; }
template <typename T> ostream &operator<<(ostream &os, const multiset<T> &st) { auto itr = st.begin(); for (int i = 0; i < (int)st.size(); i++) { os << *itr << (i + 1 != (int)st.size() ? " " : ""); itr++; } return os; }
template <typename T> ostream &operator<<(ostream &os, const unordered_set<T> &st) { ll cnt = 0; for (auto &e : st) { os << e << (++cnt != (int)st.size() ? " " : ""); } return os; }
template <typename T> ostream &operator<<(ostream &os, queue<T> q) { while (q.size()) { os << q.front() << " "; q.pop(); } return os; }
template <typename T> ostream &operator<<(ostream &os, deque<T> q) { while (q.size()) { os << q.front() << " "; q.pop_front(); } return os; }
template <typename T> ostream &operator<<(ostream &os, stack<T> st) { while (st.size()) { os << st.top() << " "; st.pop(); } return os; }
template <class T, class Container, class Compare> ostream &operator<<(ostream &os, priority_queue<T, Container, Compare> pq) { while (pq.size()) { os << pq.top() << " "; pq.pop(); } return os; }

template <typename T> int print_sep_end(string sep, string end, const T& val) { (void)sep; cout << val << end; return 0; };
template <typename T1, typename... T2> int print_sep_end(string sep, string end, const T1 &val, const T2 &...remain) {
    cout << val << sep;
    print_sep_end(sep, end, remain...);
    return 0;
};
template <typename... T> int print(const T &...args) { print_sep_end(" ", "\n", args...); return 0; };
template <typename... T> void flush() { cout << flush; };
template <typename... T> int print_and_flush(const T &...args) { print(args...); flush(); return 0; };
#define debug(...) debug_func(0, #__VA_ARGS__, __VA_ARGS__) // debug print
template <typename T> void input(T &a) { cin >> a; };
template <typename T1, typename... T2> void input(T1&a, T2 &...b) { cin >> a; input(b...); };
#ifdef LOCAL_TEST
template <typename T> void debug_func(int i, const T name) { (void)i; (void)name; cerr << endl; }
template <typename T1, typename T2, typename... T3> void debug_func(int i, const T1 &name, const T2 &a, const T3 &...b) {
    int scope = 0;
    for ( ; (scope != 0 || name[i] != ',') && name[i] != '\0'; i++ ) {
        cerr << name[i];
        if (name[i] == '(' || name[i] == '{') scope++;
        if (name[i] == ')' || name[i] == '}') scope--;
    }
    cerr << ":" << a << " ";
    debug_func(i + 1, name, b...);
}
template <typename T1, typename T2, typename... T3> void debug_func(int i, const T1 &name, T2 &a, T3 &...b) {
    int scope = 0;
    for ( ; (scope != 0 || name[i] != ',') && name[i] != '\0'; i++ ) {
        cerr << name[i];
        if (name[i] == '(' || name[i] == '{') scope++;
        if (name[i] == ')' || name[i] == '}') scope--;
    }
    cerr << ":" << a << " ";
    debug_func(i + 1, name, b...);
}
#endif
#ifndef LOCAL_TEST
template <typename... T>
void debug_func(T &...) {}
template <typename... T>
void debug_func(const T &...) {}
#endif
/**
 * @brief io.hpp
 * @docs docs/std/io.md
 */
//line 72 "answer.cpp"
#endif


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

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3800kb

input:

3
12 5
1 5
9 11
7 8
6 6
12 12
4 3
1 1
4 4
2 3
2 2
1 1
2 2

output:

0 1 2 3 4 1 1 7 1 9 10 1
2 0 2 2
IMPOSSIBLE

result:

ok Correct. (3 test cases)

Test #2:

score: 0
Accepted
time: 6ms
memory: 3864kb

input:

10
1 1
1 1
100000 1
1 100000
12 4
1 3
4 6
7 9
10 12
6 3
4 6
2 3
1 1
8999 3
1 3000
3001 6000
6001 8999
14 4
1 3
4 6
7 10
11 14
17 5
1 3
4 6
7 10
11 14
15 17
19999 2
1 9999
10000 19999
1 1
1 1
5 3
1 1
2 3
4 5

output:

0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...

result:

ok Correct. (10 test cases)

Test #3:

score: 0
Accepted
time: 5ms
memory: 3564kb

input:

5
11 5
1 3
4 6
7 8
9 10
11 11
39998 4
1 10000
10001 20000
20001 30000
30001 39998
49000 5
1 10000
39999 49000
10001 20000
20001 30000
30001 39998
16 5
1 1
2 3
4 6
7 11
12 16
10 5
1 2
3 4
5 6
7 8
9 10

output:

0 1 2 1 4 5 1 7 1 9 2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 ...

result:

ok Correct. (5 test cases)

Test #4:

score: 0
Accepted
time: 15ms
memory: 3592kb

input:

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

output:

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

result:

ok Correct. (10000 test cases)

Test #5:

score: 0
Accepted
time: 18ms
memory: 3800kb

input:

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

output:

10 10 10 10 10 10 10 10 10 0 10 10 10
8 8 8 8 8 8 8 0 8 9 10 11 12 13 14 15
IMPOSSIBLE
15 15 15 3 15 5 15 7 15 9 15 11 15 13 0 15 16
2 0 2 3 4 5
0
5 1 2 3 0 5 6 7 8 9
IMPOSSIBLE
0 1 2 3 4 5 6 7 8 9 10 11 12 13
IMPOSSIBLE
IMPOSSIBLE
5 5 5 5 0 5 6 7 8 9 10 11 12 13 14 15
0 1
IMPOSSIBLE
IMPOSSIBLE
2 0 ...

result:

ok Correct. (20000 test cases)

Test #6:

score: 0
Accepted
time: 21ms
memory: 3800kb

input:

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

output:

0
2 0 2 2
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
0
0 1 2 3 4 5 6 1 8 9
IMPOSSIBLE
IMPOSSIBLE
0 1 2 3 4 5 6 1 8 9
0 1 2 3 4 5 6 7
0 1
7 1 7 3 7 5 0 7 8
0 1 2 3 4 5 6
2 0 2 3 4 5 6
2 0 2 3
3 3 0 3 4 5
IMPOSSIBLE
0
3 3 0 3
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
0 1
IMPOSSIBLE
0 1 1 1
3 3 0 3 3
IMPOSSIBL...

result:

ok Correct. (50000 test cases)

Test #7:

score: 0
Accepted
time: 14ms
memory: 3872kb

input:

100
2619 693
286 286
81 81
552 552
397 397
24 24
414 414
378 378
660 660
538 538
125 125
190 190
585 585
180 180
564 564
218 218
158 158
425 425
189 189
94 94
29 29
678 678
543 543
352 352
659 659
467 467
403 403
298 298
517 517
196 196
156 156
278 278
259 259
417 417
499 499
246 246
195 195
380 380...

output:

693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 ...

result:

ok Correct. (100 test cases)

Test #8:

score: 0
Accepted
time: 17ms
memory: 5064kb

input:

100
53984 965
9577 9632
53593 53648
17305 17360
40321 40376
37465 37520
45753 45808
52921 52976
21281 21336
44241 44296
17921 17976
40545 40600
7897 7952
9689 9744
32089 32144
43345 43400
46817 46872
4817 4872
24585 24640
41889 41944
36065 36120
3585 3640
1486 1540
29793 29848
8065 8120
43401 43456
...

output:

IMPOSSIBLE
IMPOSSIBLE
35753 1 2 3 4 5 35753 35753 8 35753 10 11 12 13 35753 35753 35753 35753 18 35753 35753 35753 22 35753 35753 35753 35753 35753 35753 29 30 35753 32 35753 35753 35 36 35753 35753 39 40 41 42 43 44 45 46 47 35753 49 35753 35753 35753 35753 54 55 56 35753 58 59 35753 35753 62 63 64...

result:

ok Correct. (100 test cases)

Test #9:

score: 0
Accepted
time: 38ms
memory: 6728kb

input:

2
100000 72281
52926 52926
1645 1646
33266 33266
88480 88480
16983 16983
29975 29977
32528 32528
89186 89186
5810 5810
90512 90512
8859 8859
22671 22671
51648 51649
26506 26506
99017 99018
64526 64526
61453 61454
73914 73914
27338 27339
43510 43510
22298 22300
59714 59714
64394 64395
71955 71956
481...

output:

5636 5636 2 3 5636 5636 5636 7 5636 5636 10 11 5636 5636 5636 5636 16 5636 18 19 20 5636 5636 23 24 5636 26 5636 5636 5636 5636 5636 5636 5636 5636 5636 36 5636 38 39 5636 5636 5636 5636 5636 45 5636 47 5636 49 50 5636 5636 5636 5636 5636 5636 5636 5636 5636 60 5636 5636 5636 5636 5636 66 67 5636 56...

result:

ok Correct. (2 test cases)

Test #10:

score: 0
Accepted
time: 26ms
memory: 3616kb

input:

100000
2 1
1 2
2 1
1 2
2 2
2 2
1 1
2 2
2 2
1 1
2 2
1 1
2 2
2 2
2 2
1 1
2 2
1 1
2 2
2 2
1 1
2 2
2 2
1 1
2 2
2 2
2 2
1 1
2 2
2 2
1 1
2 2
1 1
2 2
2 2
1 1
2 2
2 2
2 2
1 1
2 1
1 2
2 2
2 2
1 1
2 2
2 2
1 1
2 2
2 2
1 1
2 1
1 2
2 2
1 1
2 2
2 2
1 1
2 2
2 1
1 2
2 2
2 2
1 1
2 2
2 2
1 1
2 2
1 1
2 2
2 1
1 2
2 2
1...

output:

0 1
0 1
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
0 1
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
0 1
IMPOSSIBLE
IMPOSSIBLE
0 1
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
0 1
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
0...

result:

ok Correct. (100000 test cases)

Test #11:

score: 0
Accepted
time: 20ms
memory: 3652kb

input:

100000
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok Correct. (100000 test cases)

Test #12:

score: 0
Accepted
time: 28ms
memory: 3740kb

input:

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

output:

0 1
0 1 2
2 0 2 3 4
IMPOSSIBLE
IMPOSSIBLE
0 1 2 3 4
0
2 0 2
IMPOSSIBLE
IMPOSSIBLE
3 3 0 3 3
3 3 0 3
0
0 1 2 3
3 3 0 3 3
0 1 2
IMPOSSIBLE
0 1 2 3 4
0
IMPOSSIBLE
0 1 2 3 4
0
IMPOSSIBLE
0 1 2 1
3 3 0 3 4
0 1 1
IMPOSSIBLE
IMPOSSIBLE
0
3 1 0 3 4
0
IMPOSSIBLE
3 3 0 3 4
0 1 2
3 3 0 3
0
0
IMPOSSIBLE
0 1 2 1...

result:

ok Correct. (100000 test cases)

Test #13:

score: 0
Accepted
time: 15ms
memory: 3680kb

input:

5000
50 26
5 6
9 10
1 1
23 24
43 44
19 20
29 30
2 2
17 18
47 48
3 4
35 36
27 28
25 26
49 50
31 32
45 46
15 16
39 40
21 22
11 12
13 14
37 38
33 34
7 8
41 42
86 12
17 20
33 36
41 86
1 3
4 6
13 16
25 28
37 40
29 32
21 24
7 9
10 12
59 35
5 5
6 6
22 22
31 31
32 32
25 25
21 21
20 20
26 26
2 2
34 34
3 3
35...

output:

IMPOSSIBLE
41 1 2 41 4 5 41 7 8 41 10 11 41 13 14 15 41 17 18 19 41 21 22 23 41 25 26 27 41 29 30 31 41 33 34 35 41 37 38 39 0 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
35 35 35 35 35 35 35 35 35 35 35 35 35...

result:

ok Correct. (5000 test cases)

Test #14:

score: 0
Accepted
time: 11ms
memory: 3700kb

input:

5000
335 22
13 18
134 140
85 91
50 56
7 12
31 36
113 119
71 77
106 112
1 6
37 42
64 70
92 98
43 49
120 126
127 133
99 105
25 30
141 335
19 24
57 63
78 84
475 21
40 42
22 24
37 39
16 18
7 9
31 33
49 51
43 45
52 54
19 21
1 2
55 57
10 12
5 6
58 475
28 30
13 15
25 27
34 36
3 4
46 48
252 159
138 138
77 7...

output:

141 1 2 3 4 5 141 7 8 9 10 11 141 13 14 15 16 17 141 19 20 21 22 23 141 25 26 27 28 29 141 31 32 33 34 35 141 37 38 39 40 41 141 43 44 45 46 47 48 141 50 51 52 53 54 55 141 57 58 59 60 61 62 141 64 65 66 67 68 69 141 71 72 73 74 75 76 141 78 79 80 81 82 83 141 85 86 87 88 89 90 141 92 93 94 95 96 97...

result:

ok Correct. (5000 test cases)

Test #15:

score: 0
Accepted
time: 11ms
memory: 3720kb

input:

1000
89 19
17 18
7 8
11 12
1 1
27 28
35 89
13 14
15 16
25 26
9 10
31 32
3 4
33 34
29 30
19 20
23 24
5 6
21 22
2 2
962 187
886 890
361 365
376 380
766 770
901 905
181 185
626 630
921 925
86 90
416 420
281 285
506 510
171 175
41 45
776 780
441 445
491 495
341 345
631 635
141 145
356 360
891 895
231 23...

output:

35 35 35 3 35 5 35 7 35 9 35 11 35 13 35 15 35 17 35 19 35 21 35 23 35 25 35 27 35 29 35 31 35 33 0 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
926 1 2 3 926 5 6 7 926 9 10 11 926 13...

result:

ok Correct. (1000 test cases)

Test #16:

score: 0
Accepted
time: 14ms
memory: 3688kb

input:

500
4037 286
1756 1768
2770 2782
3095 3107
1405 1417
2705 2717
2913 2925
1847 1859
482 494
807 819
2744 2756
2822 2834
2276 2288
3238 3250
1106 1118
2055 2067
3056 3068
2328 2340
2146 2158
1249 1261
1015 1027
2224 2236
1613 1625
1717 1729
222 234
3329 3341
1795 1807
2354 2366
37 48
3082 3094
2068 20...

output:

3693 1 2 3 4 5 6 7 8 9 10 11 3693 13 14 15 16 17 18 19 20 21 22 23 3693 25 26 27 28 29 30 31 32 33 34 35 3693 37 38 39 40 41 42 43 44 45 46 47 3693 49 50 51 52 53 54 55 56 57 58 59 3693 61 62 63 64 65 66 67 68 69 70 71 3693 73 74 75 76 77 78 79 80 81 82 83 3693 85 86 87 88 89 90 91 92 93 94 95 3693 ...

result:

ok Correct. (500 test cases)

Extra Test:

score: 0
Extra Test Passed