#include <stdio.h>

typedef typeof(void (*)(int i[])) callback;

void bigfor(int level, int levels, int i[], int size, callback cb) {
    if (level == levels) {
        cb(i); 
    } else {
        for(i[level] = 0; i[level] < size; ++i[level]) {
            bigfor(level + 1, levels, i, size, cb);
        }
    }
}

void kukarek(int i[]) {
    printf("Koko! %d, %d, %d\n", i[0], i[1], i[2]);
}

int main() {
    int i[3];
    bigfor(0, 3, i, 5, &kukarek);
    return 0;
}
