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

using namespace std;

vector<vector<int>> ans;
vector<bool> used;
void rec(int a, int b, int c, int n) {
    int o = -1;
    for (int i = 0; i < n && o == -1; ++i) {
        int op = compare({{a, b, c}}, {{a, b, o}, {a, c, o}, {b, c, o}});
        if (op == 0)
            o = i;
    }
    if (o == -1) {
        ans.push_back({a, b, c});
    } else {
        used[o] = true;
        rec(a, b, o, n);
        rec(a, c, o, n);
        rec(b, c, o, n);
    }
}

std::vector<std::vector<int>> solve(int n) {
    // 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;

    used[0] = used[1] = used[2] = true;
    rec(0, 1, 2, n);
    return ans;
}
