#pragma warning (disable:4996) #include using namespace std; #define BOOST #ifdef BOOST #include #include #include using namespace boost; using ml = boost::multiprecision::cpp_int; using md = boost::multiprecision::cpp_dec_float_100; #define forir(i, ...) if(ll i=(ll)v.size())for(__VA_ARGS__)if(i--,1) #define eachr(i, e, c) forir(i, const auto &e: adaptors::reverse(c)) #endif /***** type *****/ using ll = long long; using ld = long double; using pll = pair; template using vt = vector; template using vvt = vector>; template using vvvt = vector>>; /***** define *****/ #define all(c) (c).begin(), (c).end() // begin to end #define coutd cout << fixed << setprecision(10) // cout double #define rep(i, b, e) for (ll i = b; i < e; i++) // repeat #define repr(i, b, e) for (ll i = b; e < i; i--) // repeat reverse #define fori(i, ...) if (ll i = -1) for(__VA_ARGS__) if (i++, 1) #define each(i, e, c) fori (i, auto& e: c) // for each /***** const value *****/ #define llong_max 9223372036854775807 // 9 * 10^18 #define ldbl_max 1.79769e+308 // 1.7 * 10^308 #define pi 3.1415926535897932 // 3.14 ... #define loop_end 9223372036854775806 // LLONG_MAX-1 /***** lambda *****/ auto Count = [] // long long count value (auto b, auto e, auto x) { return (ll)count(b, e, x); }; auto CtoL = [] // char to number (auto c) { return (ll)c - (ll)'0'; }; auto DivCeil = [] // if (a % b != 0) return a / b + 1; (auto a, auto b) { return (ll)ceil((ld)a / (ld)b); }; auto LtoC = [] // number to char (auto n) { return (char)('0' + n); }; auto Pow = [] // long long pow (auto a, auto b) { return (ll)pow(a, b); }; auto Pow2 = [] // long long pow2 (auto n) { return (1LL << n); }; auto Pow10 = [] // long long pow10 (auto n) { return (ll)pow(10, n); }; auto Size = [] // long long collection size (auto& c) { return (ll)(c).size(); }; auto Sum = [] // long long accumulate (auto b, auto e) { return accumulate(b, e, 0LL); }; /***** template *****/ template void MakeVVT (ll ys, ll xs, vvt& v, T fill = T()) { // vector> resize + fill v.resize(ys); rep(y, 0, ys) v[y].resize(xs, fill); } template void MakeVVVT (ll zs, ll ys, ll xs, vvvt& v, T fill = T()) { // vector>> resize + fill v.resize(zs); rep(z, 0, zs) MakeVVT(ys, xs, v[z], fill); } template void InputVT (ll xs, vt& v, T fix = T()) { // input vector (T != struct) + fix v.resize(xs); rep(i, 0, xs) { cin >> v[i]; v[i] += fix; } } template void InputVVT (ll ys, ll xs, vvt& v, T fix = T()) { // input vector> (T != struct) + fix MakeVVT(ys, xs, v, fix); rep(y, 0, ys) rep(x, 0, xs) { cin >> v[y][x]; v[y][x] += fix; } } template void InputVVVT (ll zs, ll ys, ll xs, vvvt& v, T fix = T()) { // input vector>> (T != struct) + fix v.resize(zs); rep(z, 0, zs) InputVVT(ys, xs, v[z], fix); } /**************************************/ /********** BEGIN OF NYA LIB **********/ /**************************************/ namespace NyaGadget {} namespace NyaGadget { /*** MOD 型ライブラリ ***/ template struct ModLL { // 非型テンプレートパラメータ long long x; // コンストラクタ ModLL() { x = 0; } ModLL(long long x_) { x = x_ % mod + mod; if (x >= mod) x -= mod; } // 符号 ModLL operator + () const { return x; } ModLL operator - () const { return (-x < 0) ? mod - x : -x; } // 加減乗除演算子 ModLL& operator += (ModLL r) { if ((x += r.x) >= mod) x -= mod; return *this; } ModLL& operator -= (ModLL r) { if ((x -= r.x) < 0) x += mod; return *this; } ModLL& operator *= (ModLL r) { x = (unsigned long long) x * r.x % mod; return *this; } ModLL& operator /= (ModLL r) { x = x * Inv(r.x, mod) % mod; return *this; } ModLL operator + (ModLL r) const { return ModLL(*this) += r; } ModLL operator - (ModLL r) const { return ModLL(*this) -= r; } ModLL operator * (ModLL r) const { return ModLL(*this) *= r; } ModLL operator / (ModLL r) const { return ModLL(*this) /= r; } // 逆元 x^{-1} (主に除算演算子で使用) long long Inv(long long a, long long m) { long long b = m, u = 1, v = 0; while (b) { long long t = a / b; a -= t * b; swap(a, b); u -= t * v; swap(u, v); } u %= m; return (u < 0) ? u + m : u; } // 比較演算子 bool operator == (ModLL& r) const { return x == r.x; } bool operator != (ModLL& r) const { return x != r.x; } bool operator < (ModLL& r) const { return x < r.x; } bool operator <= (ModLL& r) const { return x <= r.x; } bool operator > (ModLL& r) const { return x > r.x; } bool operator >= (ModLL& r) const { return x >= r.x; } // 入出力演算子 friend ostream& operator << (ostream& s, ModLL a) { s << a.x; return s; } friend istream& operator >> (istream& s, ModLL& a) { s >> a.x; return s; } ModLL Pow(long long x, long long n) { ModLL res = 1; if (0 < n) { res = Pow(x, n / 2); res = res * res; if (n % 2 != 0) res *= x; } return res; } }; /***** MOD 関数ライブラリ *****/ struct Mod { static long long Add(long long x, long long y, long long mod) { x = (x + y) % mod; if (x >= mod) x -= mod; return x; } static long long Sub(long long x, long long y, long long mod) { x = (x - y) % mod; if (x < 0) x += mod; return x; } static long long Mul(long long x, long long y, long long mod) { x = (unsigned long long) x * y % mod; return x; } static long long Div(long long x, long long y, long long mod) { x = x * Inv(y, mod) % mod; return x; } static long long Pow(long long x, long long n, long long mod) { long long res = 1; if (0 < n) { res = Pow(x, n / 2, mod); res = Mul(res, res, mod); if (n % 2 != 0) res = Mul(res, x, mod); } return res; } static long long Inv(long long a, long long mod) { long long b = mod, u = 1, v = 0; while (b) { long long t = a / b; a -= t * b; swap(a, b); u -= t * v; swap(u, v); } u %= mod; return (u < 0) ? u + mod : u; } }; } /**************************************/ /*********** END OF NYA LIB ***********/ /**************************************/ using namespace NyaGadget; //using mll = ModLL< 1000000007 >; //using mll = ModLL< 998244353 >; int main(void) { cout << "A xor B" << endl; return 0; }