>>505
#include <iostream>

bool increment_counter(int n, int *counters, int *limits)
{
    for(int i = 0; i < n; i++)
        if(counters[i] < limits[i] - 1) {
            counters[i]++;
            return true;
        }
        else
            counters[i] = 0;
    return false;
}

bool initialize_counter(int n, int *counters)
{
    for(int i = 0; i < n; i++)
        counters[i] = 0;
    return n != 0;
}

int main()
{
    int n;
    std::cin >> n;
    int *ptr_x = new int[n];
    int *ptr_Max = new int[n];
    for(int i = 0; i < n; i++) std::cin >> ptr_Max[i];
    for(bool cond = initialize_counter(n, ptr_x); cond; cond = increment_counter(n, ptr_x, ptr_Max))
    ;// use ptr_x
}