#include <iostream>
#include <vector>
using namespace std;
auto pairs(const vector<int>& in, int groupLength = 4) {
vector<pair<int, int>> result;
int groups = in.size() / groupLength;
for (int group = 0; group < groups; ++group) {
int i = group * groupLength;
int j = i + groupLength - 1;
while (i < j) {
result.emplace_back(in[i++], in[j--]);
}
}
return result;
}
int main() {
vector<int> test = {1,2,3,4,5,6,7,8};
for (auto p : pairs(test)) {
cout << p.first << ' ' << p.second << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmF1dG8gcGFpcnMoY29uc3QgdmVjdG9yPGludD4mIGluLCBpbnQgZ3JvdXBMZW5ndGggPSA0KSB7Cgl2ZWN0b3I8cGFpcjxpbnQsIGludD4+IHJlc3VsdDsKCWludCBncm91cHMgPSBpbi5zaXplKCkgLyBncm91cExlbmd0aDsKCWZvciAoaW50IGdyb3VwID0gMDsgZ3JvdXAgPCBncm91cHM7ICsrZ3JvdXApIHsKCQlpbnQgaSA9IGdyb3VwICogZ3JvdXBMZW5ndGg7CgkJaW50IGogPSBpICsgZ3JvdXBMZW5ndGggLSAxOwoJCXdoaWxlIChpIDwgaikgewoJCQlyZXN1bHQuZW1wbGFjZV9iYWNrKGluW2krK10sIGluW2otLV0pOwoJCX0KCX0KCXJldHVybiByZXN1bHQ7Cn0KCmludCBtYWluKCkgewoJdmVjdG9yPGludD4gdGVzdCA9IHsxLDIsMyw0LDUsNiw3LDh9OwoJZm9yIChhdXRvIHAgOiBwYWlycyh0ZXN0KSkgewoJCWNvdXQgPDwgcC5maXJzdCA8PCAnICcgPDwgcC5zZWNvbmQgPDwgZW5kbDsKCX0KCXJldHVybiAwOwp9