Apparantly, the code works fine if I use char firstrun[][ROW][CHAR] instead of char firstrun[MAX][ROW][CHAR]. Probably because of the memory limitation. Thanks!
The [] on the first declaration tells the compiler to count the initializers. Since you are only providing 2, not 100, the array only takes 2 * 2 * 16 bytes, or 64 bytes. Much less than the 3200 that the [MAX] version needs.