/* * じょえチャンネル * 高評価・チャンネル登録よろしくおねがいします! * https://www.youtube.com/channel/UCRXsI3FL_kvaVL9zoolBfbQ */ #include //#pragma GCC target("avx2") //#pragma GCC optimize("O3") //#pragma GCC optimize("unroll-loops") #define f(i,n) for(int i=0;i<(n);i++) #define inf (int)(3e18) //here!!! // define int long long !!!!! #define int long long // define int long long !!!!! #define mod (int)((1e9)+7) #define intt long long #define itn long long #define P pair #define rep(i,n) for(int i=0;i inline bool chmax(T& lhs, const U& rhs) { if (lhs < rhs) { lhs = rhs; return 1; } return 0; } template inline bool chmin(T& lhs, const U& rhs) { if (lhs > rhs) { lhs = rhs; return 1; } return 0; } void Yes(){ cout<<"Yes"< x)return 0; return kai(x, y) * modpow(kai(y, y), mod - 2) % mod; } #define fin(i) scanf("%lld",&i) #define fout(i) printf("%lld",i) #define fendl printf("\n") //Library-End class modInt { int value, modulo; public: modInt() : value(0), modulo(mod) { value = 0; } template modInt(T value = 0, int modulo = mod) : value(value), modulo(modulo) { if (value < 0) { value = -value; value %= modulo; value = -value; value += modulo; } this->value = value % modulo; } inline operator int()const { return value; } inline modInt& operator+=(modInt x) { value += x.value; if (value >= modulo)value -= modulo; return *this; } inline modInt& operator++() { if (value == modulo - 1)value = 0; else value++; return *this; } inline modInt& operator-()const { return modInt(0) -= *this; } inline modInt& operator-=(modInt x) { value -= x.value; if (value < 0)value += modulo; return *this; } inline modInt& operator--() { if (value == 0)value = modulo - 1; else value--; return *this; } inline modInt& operator*=(modInt x) { value = value * x.value % modulo; return *this; } inline modInt& operator/=(modInt x) { return operator*=(x.inv()); } inline modInt inv() { return modpow(*this, modulo - 2); } template modInt operator+(T x) { return modInt(*this) += x; } template modInt& operator+=(T x) { return operator+=(modInt(x, modulo)); } template modInt operator-(T x) { return modInt(*this) -= x; } template modInt& operator-=(T x) { return operator-=(modInt(x, modulo)); } template modInt operator*(T x) { return modInt(*this) *= x; } template modInt& operator*=(T x) { return operator*=(modInt(x, modulo)); } template modInt operator/(T x) { return modInt(*this) /= x; } template modInt& operator/=(T x) { return operator/=(modInt(x, modulo)); } }; istream& operator>>(istream& ist, modInt& x) { int a; ist >> a; x = a; return ist; } #define vecin(v) for(int i=0;i class SegTree { int n; // 葉の数 vector data; // データを格納するvector T def; // 初期値かつ単位元 function operation; // 区間クエリで使う処理 function update; // 点更新で使う処理 // 区間[a,b)の総和。ノードk=[l,r)に着目している。 T _query(int a, int b, int k, int l, int r) { if (r <= a || b <= l) return def; // 交差しない if (a <= l && r <= b) return data[k]; // a,l,r,bの順で完全に含まれる else { T c1 = _query(a, b, 2 * k + 1, l, (l + r) / 2); // 左の子 T c2 = _query(a, b, 2 * k + 2, (l + r) / 2, r); // 右の子 return operation(c1, c2); } } public: // _n:必要サイズ, _def:初期値かつ単位元, _operation:クエリ関数, // _update:更新関数 SegTree(size_t _n, T _def, function _operation, function _update) : def(_def), operation(_operation), update(_update) { n = 1; while (n < _n) { n *= 2; } data = vector(2 * n - 1, def); } // 場所i(0-indexed)の値をxで更新 void change(int i, T x) { i += n - 1; data[i] = update(data[i], x); while (i > 0) { i = (i - 1) / 2; data[i] = operation(data[i * 2 + 1], data[i * 2 + 2]); } } // [a, b)の区間クエリを実行 T query(int a, int b) { return _query(a, b, 0, 0, n); } // 添字でアクセス T operator[](int i) { return data[i + n - 1]; } }; #define R_MIN ([](long long a, long long b) { return min(a, b); }) #define R_MAX ([](long long a, long long b) { return max(a, b); }) #define R_SUM ([](long long a, long long b) { return a + b; }) #define NORMAL_UPDATE ([](long long a, long long b) { return b; }) #define ADD_UPDATE ([](long long a, long long b) { return a + b; }) #define MINUS_UPDATE ([](long long a, long long b) { return a - b; } class Union_Find { vector par; vector rankmy; vector ookisa; public: Union_Find(int size) { par = vector(size); rankmy = vector(size); ookisa=vector(size); for (int i = 0; i < size; i++) { par[i] = i; ookisa[i]=1; } } int find(int x) { if (par[x] == x) { return x; } return par[x] = find(par[x]); } void unite(int x, int y) { x = find(x); y = find(y); if (x == y) { return; } if (rankmy[x] < rankmy[y]) { par[x] = y; ookisa[y]+=ookisa[x]; ookisa[x]=0; } else { par[y] = x; ookisa[x]+=ookisa[y]; ookisa[y]=0; if (rankmy[x] == rankmy[y]) { rankmy[x]++; } } } int size(int i){ i=find(i); return ookisa[i]; } bool same(int x, int y) { return find(x) == find(y); } }; //Union-Find-End int d1,d2,ans; signed main(){ ios::sync_with_stdio(false); std::cin.tie(nullptr); cin>>d1>>d2; if (d1==d2) { cout<<4<d1){ if (d2