#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]}};
            vector<vector<int>> ans = {{a[0], a[1], a[3]}, {a[0], a[2], a[3]}, {a[1], a[2], a[3]}};
            return ans;
        }
    } while (next_permutation(a.begin(), a.end()));

    for (int i = 1; i < 4; i++) {
        int x, y;
        if (i == 1) {
            x = 2; y = 3;
        } else if (i == 2) {
            x = 1; y = 3;
        } else if (i == 3) {
            x = 1; y = 2;
        }
        vector<Triangle> left = {{0, i, x}, {0, i, y}};
        vector<Triangle> right = {{0, x, y}, {i, x, y}};
        int res = compare(left, right);
        if (res == 0) {
            // vector<vector<int>> ans = {{0, x, i, y}};
            vector<vector<int>> ans = {{0, i, y}, {0, x, i}};
            return ans;
        }
    }

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