func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 5, M = 20;   int n, m, a[N], b[M], ans[M];   set<vector<int> > use[M + 1];   void find(int y, vector<int>& current) {     if (y == m) {       for (int i = 0; i < n; i++)         if (a[i] != current[i]) return;       for (int i = 0; i < n; i++) {         for (int j = 0; j < m; j++) cout <<  .* [(bool)(ans[j] & (1 << i))];         cout << endl;       }       exit(0);     }     if (use[y].find(current) != use[y].end()) return;     for (int i = 0; i < (1 << n); i++) {       if ((((((((i << 1) | i) ^ i) >> 1) >> 0)) & 1) +               (((((((i << 1) | i) ^ i) >> 1) >> 1)) & 1) +               (((((((i << 1) | i) ^ i) >> 1) >> 2)) & 1) +               (((((((i << 1) | i) ^ i) >> 1) >> 3)) & 1) +               (((((((i << 1) | i) ^ i) >> 1) >> 4)) & 1) !=           b[y])         continue;       ans[y] = i;       vector<int> newCur = current;       bool flag = true;       for (int j = 0; j < n; j++) {         if (ans[y] & (1 << j) && (!y || !(ans[y - 1] & (1 << j)))) newCur[j]++;         if (newCur[j] > a[j] || newCur[j] < a[j] - ((m - y) / 2)) {           flag = false;           break;         }       }       if (flag) find(y + 1, newCur);     }     use[y].insert(current);   }   int main() {     cin >> n >> m;     for (int i = 0; i < n; i++) cin >> a[i];     for (int i = 0; i < m; i++) cin >> b[i];     vector<int> c(n + 1, 0);     find(0, c);   }   