#include <iostream>
#include <functional>
#include <utility>
#include <vector>
using namespace std;
template <typename T>
auto vertex_triangle(const size_t index, const vector<pair<T, T>>& polygon) {
const auto& first = index == 0U ? polygon.back() : polygon[index - 1U];
const auto& second = polygon[index];
const auto& third = index == polygon.size() - 1U ? polygon.front() : polygon[index + 1U];
return [&](auto& output){ output.push_back(first);
output.push_back(second);
output.push_back(third); };
}
int main() {
const vector<pair<int, int>> input { make_pair(1, 2), make_pair(2, 3), make_pair(3, 4), make_pair(4, 5) };
vector<pair<int, int>> output;
for(size_t i = 0U; i < input.size(); ++i) {
vertex_triangle(i, input)(output);
}
for(size_t i = 0U; i < output.size(); i += 3) {
cout << output[i].first << ',' << output[i].second << '\t' << output[i + 1U].first << ',' << output[i + 1U].second << '\t' << output[i + 2U].first << ',' << output[i + 2U].second << endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPHV0aWxpdHk+CiNpbmNsdWRlIDx2ZWN0b3I+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmF1dG8gdmVydGV4X3RyaWFuZ2xlKGNvbnN0IHNpemVfdCBpbmRleCwgY29uc3QgdmVjdG9yPHBhaXI8VCwgVD4+JiBwb2x5Z29uKSB7CiAgICBjb25zdCBhdXRvJiBmaXJzdCA9IGluZGV4ID09IDBVID8gcG9seWdvbi5iYWNrKCkgOiBwb2x5Z29uW2luZGV4IC0gMVVdOwogICAgY29uc3QgYXV0byYgc2Vjb25kID0gcG9seWdvbltpbmRleF07CiAgICBjb25zdCBhdXRvJiB0aGlyZCA9IGluZGV4ID09IHBvbHlnb24uc2l6ZSgpIC0gMVUgPyBwb2x5Z29uLmZyb250KCkgOiBwb2x5Z29uW2luZGV4ICsgMVVdOwoJCiAgICByZXR1cm4gWyZdKGF1dG8mIG91dHB1dCl7IG91dHB1dC5wdXNoX2JhY2soZmlyc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQucHVzaF9iYWNrKHNlY29uZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXNoX2JhY2sodGhpcmQpOyB9Owp9IAoKaW50IG1haW4oKSB7CiAgICBjb25zdCB2ZWN0b3I8cGFpcjxpbnQsIGludD4+IGlucHV0IHsgbWFrZV9wYWlyKDEsIDIpLCBtYWtlX3BhaXIoMiwgMyksIG1ha2VfcGFpcigzLCA0KSwgbWFrZV9wYWlyKDQsIDUpIH07CiAgICB2ZWN0b3I8cGFpcjxpbnQsIGludD4+IG91dHB1dDsKCQogICAgZm9yKHNpemVfdCBpID0gMFU7IGkgPCBpbnB1dC5zaXplKCk7ICsraSkgewogICAgICAgIHZlcnRleF90cmlhbmdsZShpLCBpbnB1dCkob3V0cHV0KTsKICAgIH0KCQogICAgZm9yKHNpemVfdCBpID0gMFU7IGkgPCBvdXRwdXQuc2l6ZSgpOyBpICs9IDMpIHsKICAgICAgICBjb3V0IDw8IG91dHB1dFtpXS5maXJzdCA8PCAnLCcgPDwgb3V0cHV0W2ldLnNlY29uZCA8PCAnXHQnIDw8IG91dHB1dFtpICsgMVVdLmZpcnN0IDw8ICcsJyA8PCBvdXRwdXRbaSArIDFVXS5zZWNvbmQgPDwgJ1x0JyA8PCBvdXRwdXRbaSArIDJVXS5maXJzdCA8PCAnLCcgPDwgb3V0cHV0W2kgKyAyVV0uc2Vjb25kIDw8IGVuZGw7CiAgICB9Cn0=
4,5 1,2 2,3
1,2 2,3 3,4
2,3 3,4 4,5
3,4 4,5 1,2