#include "Alicelib.h"
#include <cassert>
#include <vector>
#include <cstdio>
using namespace std;
void Alice( int N, int M, int A[], int B[] ){
vector<pair<int, int>> E;
E.reserve(M + N);
for (int m = 0; m < M; m++)
E.push_back({A[m], B[m]});
for (int n = 0; n < N; n++)
E.push_back({n, N});
int root = N + 1, id = N + 2, zero = N + 3;
E.push_back({root, zero});
E.push_back({N, zero});
for (int n = 1; n < 10; n++)
E.push_back({root, zero + n}),
E.push_back({N, zero + n}),
E.push_back({zero + n - 1, zero + n});
E.push_back({id, zero});
for (int x = 0; x < N; x++) {
int c = x, i = 0;
while (c > 0) {
if (c & 1)
E.push_back({x, zero + i});
c >>= 1, i++;
}
}
InitG(N + 13, E.size());
for (int i = 0; i < E.size(); i++)
MakeG(i, E[i].first, E[i].second);
}
#include "Alicelib.h"
#include <cassert>
#include <vector>
#include <cstdio>
using namespace std;
void Alice( int N, int M, int A[], int B[] ){
vector<pair<int, int>> E;
E.reserve(M + N);
for (int m = 0; m < M; m++)
E.push_back({A[m], B[m]});
for (int n = 0; n < N; n++)
E.push_back({n, N});
int root = N + 1, id = N + 2, zero = N + 3;
E.push_back({root, zero});
E.push_back({N, zero});
for (int n = 1; n < 10; n++)
E.push_back({root, zero + n}),
E.push_back({N, zero + n}),
E.push_back({zero + n - 1, zero + n});
E.push_back({id, zero});
for (int x = 0; x < N; x++) {
int c = x, i = 0;
while (c > 0) {
if (c & 1)
E.push_back({x, zero + i});
c >>= 1, i++;
}
}
InitG(N + 13, E.size());
for (int i = 0; i < E.size(); i++)
MakeG(i, E[i].first, E[i].second);
}