gcc – Recursividad arreglo[3] en .C


Hola Quiero elaborar un cuadrado mágico de 3 x 3 en C utilizando backtracking (como en el ejercicio de las 4 reinas) con recursividad.

Además debo de ingresar el valor máximo que tendrá dentro este cuadrado mágico, por ejemplo si ingreso m = 26, mi cuadro debería quedar algo así:

introducir la descripción de la imagen aquí

como debe ser realizado por backtracking, esa es una posible solución de muchas, actualmente tengo un código simple de 3 loops para realizar todas las combinaciones posibles ingresando el valor de M.

adjunto código:

#include<stdio.h>
#include<string.h>
#define N 10

void print(int *num, int n)
{
    int i;
    for ( i = 0 ; i < n ; i++)
        printf("%d ", num(i));
    printf("n");
}

int main()
{
    int num(N);
    int *ptr;
    int temp;
    int i, m, j;
    int n = 3;
    printf("nlimite: ");
        scanf("%d", &m);
    for (int i = 1; i <= m; ++i)
    {
        for (int j = 1; j <= m; ++j)
        {
            for (int k = 1; k <= m; ++k)
            {
                permutaciones ++;
                printf("%i,%i,%in", i,j,k);
            }
        }
    }
    return 0;
}

¿como puedo transformar este código para que sea de manera recursiva ? y sin repetir los primeros valores, por ejemplo (1,1,1)(16,16,16)
ya que esto me permitirá crear las posibles filas y columnas posibles para elaborar el cuadro mágico.

y finalmente poder imprimir todas las soluciones posibles que sean correctas.
introducir la descripción de la imagen aquí

para la compilación utilizo MingGW - gcc en windows, de antemano muchas gracias por la ayuda