Помогите, нужна помощь. Только начал изучать динамические массивы

Код должен принимать на себя значение n, отвечающее за количество строк в массиве, и сами элементы массива (по итогу должен получится array[n][3]). При выводе тех же значений из массива почему то первые элементы не совпадают с введёнными, не знаю почему. Ввожу в качестве теста:

16
3 2 3 
1 2 3 
1 3 3 
3 2 4 
3 1 3 
2 2 1 
4 3 4 
4 2 4 
3 4 2 
2 1 3 
2 4 3 
2 2 4 
3 4 4 
3 4 2 
4 3 4 
3 2 2

Выводит:

11344416 0 11364720
11365120 0 11365728
1 3 3
3 2 4
3 1 3
2 2 1
4 3 4
4 2 4
3 4 2
2 1 3
2 4 3
2 2 4
3 4 4
3 4 2
4 3 4
3 2 2

(только первые 6 не совпадают)

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

int main()
{   int n, **array;
    printf("Enter the number of students\n");
    scanf("%d", &n);
    if (n <= 0)
        printf("The number of students are entered incorrectly");
    else {
    printf("Enter student's grades\n");


    array = (int**)malloc(n * sizeof(int));
    for (int i = 0; i < n; i++)
        {array[i] = (int*)malloc(3 * sizeof(int));
        for (int l = 0; l < 3; l++)
            scanf("%d", &array[i][l]);}

    for (int i = 0; i < n; i++)
        {
        for (int l =0; l < 3; l++)
                    printf("%d ", array[i][l]);
        printf("\n");
        }
    }
     return 0;
}

Ответы (0 шт):