output_description: Output should be in the following format:
  
    * In the first line, print integers h and w representing the size of the grid you constructed, with a space in between.
    * Then, print h more lines. The i-th (1 \leq i \leq h) of these lines should contain a string s_i as follows:
      * If the square at the i-th row and j-th column (1 \leq j \leq w) in the grid is painted white, the j-th character in s_i should be `.`.
      * If the square at the i-th row and j-th column (1 \leq j \leq w) in the grid is painted black, the j-th character in s_i should be `#`.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      A B
attempt: #include <bits/stdc++.h>
  using namespace std;
  using ll = long long;
  using ld = long double;
  using VI = vector<int>;
  using VL = vector<ll>;
  template<class T> using PQ = priority_queue<T, vector<T>, greater<T>>;
  #define FOR(i,a,n) for(int (i)=(a);(i)<(n);++(i))
  #define eFOR(i,a,n) for(int (i)=(a);(i)<=(n);++(i))
  #define rFOR(i,a,n) for(int (i)=(n)-1;(i)>=(a);--(i))
  #define erFOR(i,a,n) for(int (i)=(n);(i)>=(a);--(i))
  #define each(i, a) for(auto &i : a)
  #define SORT(i) sort((i).begin(),(i).end())
  #define rSORT(i,a) sort((i).begin(),(i).end(),(a))
  #define all(i) (i).begin(),(i).end()
  #define out(y,x) ((y) < 0 || h <= (y) || (x) < 0 || w <= (x))
  #define line cout << "------------------------\n" 
  #define ENDL(i,n) ((i) == (n) - 1 ? "\n" : " ")
  #define stop system("pause") //comment out this on AOJ.
  constexpr ll INF = 1000000000;
  constexpr ll LLINF = 1LL << 60;
  constexpr ll mod = 1000000007;
  constexpr ll MOD = 998244353;
  constexpr ld eps = 1e-10; //1e-9?
  constexpr ld pi = 3.1415926535897932;
  template<class T>inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; }return false; }
  template<class T>inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; }return false; }
  inline void init() { cin.tie(nullptr); cout.tie(nullptr); ios::sync_with_stdio(false); cout << fixed << setprecision(15); }
  template<class T>inline istream& operator>>(istream& is, vector<T>& v) { for (auto& elemnt : v)is >> elemnt; return is; }
  template<class T, class U>inline istream& operator>>(istream& is, pair<T, U>& p) { is >> p.first >> p.second; return is; }
  template<class T>inline vector<T> vec(size_t a) { return vector<T>(a); }
  template<class T>inline vector<T> defvec(T def, size_t a) { return vector<T>(a, def); }
  template<class T, class... Ts>inline auto vec(size_t a, Ts... ts) { return vector<decltype(vec<T>(ts...))>(a, vec<T>(ts...)); }
  template<class T, class... Ts>inline auto defvec(T def, size_t a, Ts... ts) { return vector<decltype(defvec<T>(def, ts...))>(a, defvec<T>(def, ts...)); }
  
  int main() {
      init();
  
      int h = 100, w = 100;
      int a, b; cin >> a >> b;
  
      auto s = defvec<char>('#', h, w);
      int a_cnt = a - 1, b_cnt = b - 1;
      FOR(y, 0, h)s[y][w - 1] = '.';
      FOR(x, 0, w)s[h - 1][x] = '.';
  
      for (int y = 3; y < h - 1 && 0 < b_cnt; y += 4, --b_cnt) {
          FOR(x, 0, w)s[y][x] = '.';
      }
      for (int x = 3; x < w - 1 && 0 < b_cnt; x += 4) {
          for (int y = 0; y < h && 0 < b_cnt; ++y) {
              if (s[y][x] == '.')--b_cnt;
              else s[y][x] = '.';
          }
      }
  
      for (int y = 1; y < h && 0 < a_cnt; y += 4) {
          for (int x = 1; x < w && 0 < a_cnt; x += 4, --a_cnt) {
              s[y][x] = '.';
          }
      }
  
      FOR(y, 0, h) {
          FOR(x, 0, w)cout << s[y][x];
          cout << "\n";
      }
  
  }
  
problem_description: Statement
  
  You are given two integers A and B.
  
  Print a grid where each square is painted white or black that satisfies the
  following conditions, in the format specified in Output section:
  
    * Let the size of the grid be h \times w (h vertical, w horizontal). Both h and w are at most 100.
    * The set of the squares painted white is divided into exactly A connected components.
    * The set of the squares painted black is divided into exactly B connected components.
  
  It can be proved that there always exist one or more solutions under the
  conditions specified in Constraints section. If there are multiple solutions,
  any of them may be printed.
samples: [{"input": "2 3", "output": "3 3\n    ##.\n    ..#\n    #.#\n    \n\nThis output corresponds to the grid below:\n\n![2701558bf42f7c088abad927b419472a.png](https://img.atcoder.jp/arc093/2701558bf42f7c088abad927b419472a.png)\n\n* * *"}, {"input": "7 8", "output": "3 5\n    #.#.#\n    .#.#.\n    #.#.#\n    \n\n* * *"}, {"input": "1 1", "output": "4 2\n    ..\n    #.\n    ##\n    ##\n    \n\n* * *"}, {"input": "3 14", "output": "8 18\n    ..................\n    ..................\n    ....##.......####.\n    ....#.#.....#.....\n    ...#...#....#.....\n    ..#.###.#...#.....\n    .#.......#..#.....\n    #.........#..####."}]