#include "Anna.h"
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
int A = 63, B = 44, f[100];
int encode(vector<int> v) {
reverse(v.begin(), v.end());
int res = 0;
for (int i = 0; i < A; i++) if (v[i]) res += f[i];
return res;
}
void Anna(signed n, vector<char> s) {
f[0] = 1;
f[1] = 2;
for (int i = 2; i <= A; i++) f[i] = f[i - 1] + f[i - 2];
vector<int> res;
int id = 0;
while (id < n && s[id] != 'X') ++id;
if (id == n) {
Send(0);
return;
}
for (int i = 0; i < 17; i++) Send(!!((1 << i) & id));
for (int i = id + 1; i < n; i++) {
if (s[i] == 'Z' && (i == n - 1 || s[i + 1] != 'Z')) res.pb(1);
else res.pb(0);
}
while ((int)res.size() % A) res.pb(0);
for (int i = 0; i < (int)res.size(); i += A) {
vector<int> temp(A);
for (int j = 0; j < A; j++) temp[j] = res[i + j];
int c = encode(temp);
for (int j = 0; j < B; j++) Send(!!(c & (1ll << j)));
}
}
#include "Bruno.h"
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
int A = 63, B = 44, f[100];
vector<int> vals;
void decode(int a) {
for (int i = A - 1; i >= 0; --i) {
if (a >= f[i]) a -= f[i], vals.pb(1);
else vals.pb(0);
}
}
void Bruno(signed n, signed l, vector<signed> a) {
f[0] = 1;
f[1] = 2;
for (int i = 2; i <= A; i++) f[i] = f[i - 1] + f[i - 2];
if (l == 1) {
for (int i = 0; i < n; i++) Remove(i);
return;
}
int id = 0;
for (int i = 0; i < 17; i++) if (a[i]) id += (1 << i);
vector<int> vect(1, id);
for (int i = 17; i < (int)a.size(); i += B) {
int res = 0;
for (int j = 0; j < B; j++) if (i + j < (int)a.size() && a[i + j]) res += (1ll << j);
decode(res);
}
for (int i = 0; i < (int)vals.size(); i++) if (vals[i]) vect.pb(i + id + 1);
for (int i = 0; i < vect[0]; i++) Remove(i);
for (int i = vect.back() + 1; i < n; i++) Remove(i);
for (int i = 1; i < (int)vect.size(); i++) {
for (int j = vect[i] - 1; j > vect[i - 1]; --j) Remove(j);
Remove(vect[i]);
}
Remove(vect[0]);
}