#include <stdlib.h>
#include <stdio.h>

int main()
{
    int** N = malloc(9 * sizeof(int*));
    for (int i = 1; i <= 8; i++)
    {
        int length = i * 9 + 1;
        N[i] = malloc(length * sizeof(int));

        if (i == 1)
        {
            for (int j = 0; j < length; j++)
                N[i][j] = 1;
        }
        else
        {
            unsigned long long runningsum = 0;
            int k = 0;
            for ( ; k <= length / 2; k++)
            {
                runningsum += N[i-1][k];
                if (k >= 10)
                   runningsum -= N[i-1][k-10];
                N[i][k] = runningsum;
            }
            for ( ; k < length; k++)
            {
                N[i][k] = N[i][length - 1 - k];
            }
        }
    }
    
    for (int i = 1; i <= 8; i++)
    {
        for (int j = 0; j < i * 9 + 1; j++)
        {
            printf("%d ", N[i][j]);
        }
        printf("\n");
    }
 
    return 0;
}
