func_code_string: #include <bits/stdc++.h>   using namespace std;   int main() {     int W, H;     while (cin >> W >> H) {       vector<pair<int, int>> pset;       for (int dy = 0; dy < (int)(2); ++dy)         for (int dx = 0; dx < (int)(2); ++dx) {           if (dx <= W && dy <= H) pset.push_back(pair<int, int>(dx, dy));         }       for (int dy = 0; dy < (int)(2); ++dy)         for (int dx = 0; dx < (int)(2); ++dx) {           if (dx <= W && H - dy >= 0) pset.push_back(pair<int, int>(dx, H - dy));         }       for (int dy = 0; dy < (int)(2); ++dy)         for (int dx = 0; dx < (int)(2); ++dx) {           if (W - dx >= 0 && dy <= H) pset.push_back(pair<int, int>(W - dx, dy));         }       for (int dy = 0; dy < (int)(2); ++dy)         for (int dx = 0; dx < (int)(2); ++dx) {           if (W - dx >= 0 && H - dy >= 0)             pset.push_back(pair<int, int>(W - dx, H - dy));         }       sort(pset.begin(), pset.end());       pset.erase(unique(pset.begin(), pset.end()), pset.end());       vector<pair<double, vector<pair<int, int>>>> ans;       for (int comb = (1 << 4) - 1; comb < (1 << pset.size());) {         vector<pair<int, int>> ps;         for (int i = 0; i < (int)(pset.size()); ++i)           if (comb >> i & 1) {             ps.push_back(pset[i]);           }         sort(ps.begin(), ps.end());         do {           double len = 0;           for (int i = 0; i < (int)(3); ++i) {             len += hypot(ps[i].first - ps[i + 1].first,                          ps[i].second - ps[i + 1].second);           }           ans.push_back(make_pair(len, ps));         } while (next_permutation(ps.begin(), ps.end()));         int x = comb & -comb, y = comb + x;         comb = ((comb & ~y) / x >> 1) | y;       }       sort(ans.begin(), ans.end());       vector<pair<int, int>> ps = ans.back().second;       for (int i = 0; i < (int)(4); ++i) {         cout << ps[i].first <<     << ps[i].second << endl;       }     }     return 0;   }   