#include <bits/stdc++.h>
#define int long long
#define ll long long
#define double long double
#define all(v) v.begin(), v.end()
#define ii pair<int, int>
#define fi first
#define se second
#define pb push_back
#define maximize(a, b) a = max(a, b)
#define minimize(a, b) a = min(a, b)
#define cbit(n) __builtin_popcount(n)
#define getbit(mask, i) ((mask >> i) & 1LL)
#define onbit(mask, i) (mask | (1LL << i))
#define offbit(mask, i) (mask ^ (1LL << i))
#define TASK "1"
using namespace std;
const int N = 2e5 + 5;
const ll oo = 1e18;
const int base = 311;
//const int sz = sqrt(N);
const int mod = 1e9 + 7;
mt19937_64 rd(chrono::steady_clock::now().time_since_epoch().count());
int Rand(int l, int r)
{
return uniform_int_distribution<int> (l, r) (rd);
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
if(fopen(TASK".inp", "r")){
freopen(TASK".inp", "r", stdin);
freopen(TASK".out", "w", stdout);
}
srand(time(NULL));
int nTest = 1000;
for(int test = 1; test <= nTest; test++){
ofstream inp("test.inp");
int n = Rand(1, 300), q = Rand(1, 300);
// n = 500000;
inp << n << " " << q << "\n";
for(int i = 1; i <= n; i++) inp << Rand(-100, 100) << " \n"[i == n];
for(int i = 1; i <= q; i++) inp << Rand(-100, 100) << " \n"[i == q];
inp.close();
system("./test");
system("./test_trau");
if(system("diff test.out test.ans") != 0) return 0;
cerr << "Test " << test << ": AC\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBkb3VibGUgbG9uZyBkb3VibGUKI2RlZmluZSBhbGwodikgdi5iZWdpbigpLCB2LmVuZCgpCiNkZWZpbmUgaWkgcGFpcjxpbnQsIGludD4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1heGltaXplKGEsIGIpIGEgPSBtYXgoYSwgYikKI2RlZmluZSBtaW5pbWl6ZShhLCBiKSBhID0gbWluKGEsIGIpCiNkZWZpbmUgY2JpdChuKSBfX2J1aWx0aW5fcG9wY291bnQobikKI2RlZmluZSBnZXRiaXQobWFzaywgaSkgKChtYXNrID4+IGkpICYgMUxMKQojZGVmaW5lIG9uYml0KG1hc2ssIGkpIChtYXNrIHwgKDFMTCA8PCBpKSkKI2RlZmluZSBvZmZiaXQobWFzaywgaSkgKG1hc2sgXiAoMUxMIDw8IGkpKQojZGVmaW5lIFRBU0sgIjEiCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE4gPSAyZTUgKyA1Owpjb25zdCBsbCBvbyA9IDFlMTg7CmNvbnN0IGludCBiYXNlID0gMzExOwovL2NvbnN0IGludCBzeiA9IHNxcnQoTik7CmNvbnN0IGludCBtb2QgPSAxZTkgKyA3OwoKbXQxOTkzN182NCByZChjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgpLmNvdW50KCkpOwoKaW50IFJhbmQoaW50IGwsIGludCByKQp7CiAgICByZXR1cm4gdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludD4gKGwsIHIpIChyZCk7Cn0KCnNpZ25lZCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgY291dC50aWUoTlVMTCk7CgogICAgaWYoZm9wZW4oVEFTSyIuaW5wIiwgInIiKSl7CiAgICAgICAgZnJlb3BlbihUQVNLIi5pbnAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKFRBU0siLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KCiAgICBzcmFuZCh0aW1lKE5VTEwpKTsKICAgIGludCBuVGVzdCA9IDEwMDA7CiAgICBmb3IoaW50IHRlc3QgPSAxOyB0ZXN0IDw9IG5UZXN0OyB0ZXN0KyspewogICAgICAgIG9mc3RyZWFtIGlucCgidGVzdC5pbnAiKTsKICAgICAgICBpbnQgbiA9IFJhbmQoMSwgMzAwKSwgcSA9IFJhbmQoMSwgMzAwKTsKLy8gICAgICAgIG4gPSA1MDAwMDA7CiAgICAgICAgaW5wIDw8IG4gPDwgIiAiIDw8IHEgPDwgIlxuIjsKICAgICAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgaW5wIDw8IFJhbmQoLTEwMCwgMTAwKSA8PCAiIFxuIltpID09IG5dOwogICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKSBpbnAgPDwgUmFuZCgtMTAwLCAxMDApIDw8ICIgXG4iW2kgPT0gcV07CgogICAgICAgIGlucC5jbG9zZSgpOwogICAgICAgIHN5c3RlbSgiLi90ZXN0Iik7CiAgICAgICAgc3lzdGVtKCIuL3Rlc3RfdHJhdSIpOwogICAgICAgIGlmKHN5c3RlbSgiZGlmZiB0ZXN0Lm91dCB0ZXN0LmFucyIpICE9IDApIHJldHVybiAwOwogICAgICAgIGNlcnIgPDwgIlRlc3QgIiA8PCB0ZXN0IDw8ICI6IEFDXG4iOwogICAgfQogICAgcmV0dXJuIDA7Cn0K