Submission

Status:

(-SSSSSSSSS)(-SSSS)(-SSSS)(SSSSSSSSSS)

Subtask/Task Score:

{0/20}{0/30}{0/30}{0/20}

Score: 0

User: kittipos

Problemset: กองไฟ

Language: cpp

Time: 0.003 second

Submitted On: 2026-03-09 22:41:05

#include <bits/stdc++.h>

using namespace std;

const int MOD = 1e9+7;

int solve(vector<int> left, int prev, int start) {
    // cout << "check" << endl;
    int sum = 0;
    bool fork = false;
    for (int i = 0; i < 3; i++) {
        if (left[i] == 0 || i == prev) continue;
        fork = true;
        vector<int> new_left = left;
        new_left[i]--;

        sum += solve(new_left, i, start);
        sum %= MOD;
    }

    if (!fork) {
        return 1;
    }
    return sum;
}

int32_t main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int n;
    cin >> n;
    vector<int> left;
    left.resize(3);
    for (int i = 0; i < 3; i++) {
        cin >> left[i];
    }

    int sum = 0;
    for (int i = 0; i < 3; i++) {
        vector<int> new_left = left;
        if (new_left[i] == 0) continue;

        new_left[i]--;
        sum += solve(new_left, i, i);
        sum %= MOD;
    }
    cout << sum;

    return 0;
}