#include "triangles.h"

#include <algorithm>
using namespace std;

vector<vector<int>> solve(int n) {
    if (n != 4) return {};
    vector<int> a = {0, 1, 2, 3};
    do {
        vector<Triangle> left = {Triangle(a[0], a[1], a[2])};
        vector<Triangle> right = {
            Triangle(a[0], a[1], a[3]),
            Triangle(a[0], a[2], a[3]),
            Triangle(a[1], a[2], a[3]),
        };
        int res = compare(left, right);
        if (res == 0) {
            vector<vector<int>> ans = {{a[0], a[1], a[2]}};
            return ans;
        }
    } while (next_permutation(a.begin(), a.end()));

    a = {0, 1, 2, 3};
    do {
        vector<Triangle> left = {{a[0], a[1], a[3]}, {a[0], a[1], a[3]}};
        vector<Triangle> right = {{a[2], a[1], a[0]}, {a[2], a[3], a[0]}};
        int res = compare(left, right);
        if (res == 0) {
            vector<vector<int>> ans = {{a[0], a[1], a[2], a[3]}};
            return ans;
        }
    } while (next_permutation(a.begin(), a.end()));

    /*
    // 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;
    */
}
