スーパーコン落ちました

提出したコードです

#include<stdio.h>
#include "sc13.h"

#define N 30

int func(int* field, int mass, int* Max_mass, int* out_ptr) {
    int ret = 0, bol, val = 0;
    
    if(Max_mass[mass % N] < mass) {
        Max_mass[mass % N] = mass;
        val = field[mass % N];
        ret = (mass + 1) % N ? 0 : 1;
    }
    
    if(val) {
        field[mass % N] = 0;
        if( (bol = func(field, mass + val, Max_mass, out_ptr + 1)) != 0 ) ret = bol + 1;
        if( (bol = func(field, mass - val, Max_mass, out_ptr + 1)) != 0 ) ret = bol + 1;
        field[mass % N] = val;
    }
    
    if(ret) *out_ptr = mass % N;
    
    return ret;
}

int main() {
    int field[N];
    int Max_mass[N];
    int ans[N];
    int size;
    int i, loop = 5;
    
    while(loop--) {
        for(i = 0; i < N; ++i) scanf("%d", &field[i]);
        field[N - 1] = 0;
        
        for(i = 0; i < N; ++i) Max_mass[i] = 0;
        
        size = func(field, N*N/2, Max_mass, ans);
        sc_output(size, ans);
    }
    return 0;
}

実際、落ちるとは思ってなかった。
人生そんなに甘くなかった。