#include #include using namespace std; #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() #define pb push_back #define ppb pop_back typedef long long ll; typedef pair pii; typedef vector vi; typedef pair pl; typedef vector vl; typedef vector vvl; #define rep2(i, n) for (ll i = 0; i < (n); ++i) #define rep3(i, a, b) for (ll i = (a); i < (b); ++i) #define rep_select(_1, _2, _3, name, ...) name #define rep(...) rep_select(__VA_ARGS__, rep3, rep2)(__VA_ARGS__) #define rrep2(i, n) for (ll i = (ll)(n) - 1; i >= 0; --i) #define rrep3(i, a, b) for (ll i = (ll)(b) - 1; i >= (ll)(a); --i) #define rrep(...) rep_select(__VA_ARGS__, rrep3, rrep2)(__VA_ARGS__) vl dx={1,0,-1,0}; vl dy={0,1,0,-1}; int main() { ll h,w; cin >> h >> w; bool swp=false; if(h>w) swap(h,w),swp=true; vvl board(h,vl(w,-1)); vector> ans; ll type=4; assert(h%2==0&&w%2==0); if(h==2){ rep(i,w){ ans.pb({{0,i},{1,i}}); board[0][i]=0; board[1][i]=1; } type=2; } if(h==4){ rep(i,w){ ans.pb({{0,i},{1,i}}); ans.pb({{2,i},{3,i}}); board[0][i]=0; board[1][i]=1; board[2][i]=1; board[3][i]=2; } type=3; } ll paint=0; if(h>=6){ vl x={0,h-1,h-1,0}; vl y={0,0,w-1,w-1}; vl dir={0,1,2,3}; ll cnt=2; rep(i,4){ board[x[i]][y[i]]=i; paint++; } while(paint