#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/priority_queue.hpp>
#define lp(i, l, r) for (int i = l; i <= r; ++i)
#define rp(i, r, l) for (int i = r; i >= l; --i)
#define ls(i, s) for (int i = 0; s[i]; ++i)
#define rs(i, s) for (int i = strlen(s) - 1; i >= 0; --i)
#define lv(i, a) for (int i = 0; i < a.size(); ++i)
#define rv(i, a) for (int i = (int)a.size() - 1; i >= 0; --i)
#define in(a) int a = (cin >> a, a)
#define ou(a) cout << a << endl
#define fast ios::sync_with_stdio(0), cin.tie(0)
#define prec(a) cout << setprecision(a) << fixed
#define appl(f, a) for (auto i = begin(a); i != end(a); f, ++i)
#define many for (int T = -1; T < 0 && cin >> T, T--;)
#define rang(a) begin(a), end(a)
#define gene template <class T>
#define endl '\n'
#define asse assert
using namespace std;
using namespace __gnu_pbds;
gene void sort(T &a) { sort(rang(a)); }
gene void reve(T &a) { reverse(rang(a)); }
gene void uniq(T &a) { sort(a), a.erase(unique(rang(a)), end(a)); }
gene void shuf(T &a) { random_shuffle(rang(a)); }
gene void merg(T l, T m, T r) { inplace_merge(l, m, r); }
gene auto gath(const T &a, const vector<int> &b) {
    vector<typename T::value_type> r;
    for (auto i : b)
        r.push_back(a[i]);
    return r;
}
gene auto min(const T &a) { return *min_element(rang(a)); }
gene auto max(const T &a) { return *max_element(rang(a)); }
gene auto sum(const T &a) { return accumulate(rang(a), 0); }
gene T inf() { return numeric_limits<T>::max(); }
gene int tmin(T &a, T b) { return b < a ? a = b, 1 : 0; }
gene int tmax(T &a, T b) { return b > a ? a = b, 1 : 0; }
gene using bbst =
    tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
gene using heap = __gnu_pbds::priority_queue<T, greater<T>, pairing_heap_tag>;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<pii> vpii;
template <class F, class S> auto &operator>>(istream &s, pair<F, S> &a) {
    return s >> a.first >> a.second;
}
gene auto &operator>>(istream &s, vector<T> &a) {
    for (int i = -1; i < 0 && (!a.size() && (cin >> i, a.resize(i), 0), i = 0),
             i < a.size();)
        s >> a[i++];
    return s;
}
template <class F, class S> auto &operator<<(ostream &s, const pair<F, S> &a) {
    return s << '(' << a.first << ", " << a.second << ')';
}
gene auto &operator<<(ostream &s, const vector<T> &a) {
    lv(i, a) cout << a[i] << (i + 1 == a.size() ? "" : " ");
    return s;
}
void dfs(int u, vi &col, vvi &to) {
    for (auto v : to[u]) {
        if (col[v] == 0) {
            col[v] = col[u];
            dfs(v, col, to);
        }
    }
}
bool try_col(vvi &to, vi &col, int u) {
    for (auto v : to[u]) {
        if (col[v] == 0) {
            col[v] = -col[u];
            try_col(to, col, v);
        }
    }
    return true;
}
int main() {
    fast, prec(12);
  cout<<-1<<endl;
  return 0;
    int n, m;
    cin >> n >> m;
    vi d(n);
    cin >> d;
    vvi to(n);
    vi ass(m);
    vi col(n);
    vpii egs;
    lp(i, 1, m) {
        int u, v;
        cin >> u >> v;
        --u, --v;
        if (d[u] != d[v]) {
            ass[i - 1] = abs(d[u] - d[v]);
            if (d[u] < d[v])
                to[u].push_back(v);
            else
                to[v].push_back(u);
        } else {
            ass[i - 1] = 1e9;
        }
        egs.emplace_back(u, v);
    }
    int md = min(d);
    int i = 0;
    vvi to2(n);
    set<int> vs;
    for (auto e : egs) {
        int u = e.first, v = e.second;
        if (d[u] == md && d[v] == md) {
            ass[i] = md;
            to2[u].push_back(v);
            to2[v].push_back(u);
            vs.insert(u);
            vs.insert(v);
        }
        ++i;
    }
    if (vs.size() == 0) {
        cout << -1 << endl;
        return 0;
    }
    for (auto u : vs) {
        if (col[u])
            continue;
        col[u] = 1;
        if (!try_col(to2, col, u)) {
            cout << -1 << endl;
            return 0;
        }
    }
    for (auto u : vs)
        dfs(u, col, to);
    lp(i, 0, n - 1) if (col[i] == 0) {
        cout << -1 << endl;
        return 0;
    }
    lp(i, 0, n - 1) if (col[i] == -1) cout << "B";
    else cout << "W";
    cout << endl;
    lp(i, 0, m - 1) {
        if (col[egs[i].first] != col[egs[i].second]) {
            if (d[egs[i].first] != md || d[egs[i].second] != md)
                ass[i] = 1e9;
        }
        if (col[egs[i].first] == col[egs[i].second]) {
            if (d[egs[i].first] == md && d[egs[i].second] == md)
                ass[i] = 1e9;
        }
    }
    for (auto v : ass)
        cout << v << endl;
    return 0;
}
