#include "triangles.h"
#include <vector>

using namespace std;

std::vector<std::vector<int>> solve(int n) {
    std::vector<Triangle> all = {
        Triangle(1, 2, 3),
        Triangle(0, 2, 3),
        Triangle(0, 1, 3),
        Triangle(0, 1, 2)
    };
    for (int i = 0; i < 4; ++i) {
        vector <Triangle> l = all[i];
        vector <Triangle> r;
        for (int j = 0; j < 4; ++j) {
            if (i != j) {
                r.push_back(all[j]);
                vector <Triangle> ans;
                for (int k = 0; k < 4; ++k) {
                    if (i != k) {
                        if (compare(l, r)) {
                            ans.push_back(all[k]);
                        }
                    }
                }
                return {ans};
            }
        }
    }
    if (compare({all[0], all[1]}, {all[2], all[3]})) {
        return {all[0], all[2], all[1], all[3]};
    }
    if (compare({all[0], all[2]}, {all[1], all[3]})) {
        return {all[0], all[1], all[2], all[3]};
    }
    return {all[0], all[1], all[3], all[2]};
}

/*
// Example of compare:
// Пример использования функции compare:
std::vector<Triangle> left = {Triangle(0, 1, 2)};
std::vector<Triangle> right = {Triangle(0, 1, 2)};
int compare_result = compare(left, right);
// compare_result should be equal to 0.
// compare_result будет равняться нулю, так как сравнивались одинаковые треугольники.

// Example of return:
// Пример возвращаемого значения:
std::vector<std::vector<int>> ans;
ans.push_back(std::vector<int>(n));
for (int i = 0; i < n; ++i) {
    ans[0][i] = i;
}
return ans;
*/