Socorro! Código não concatena Strings!

Boa tarde a todos - Gostaria de ajuda com o código abaixo pois não faço ideia do problema!

A saída deveria ser a concatenação de duas strings em ponteiro conforme a estrutura Elemento abaixo porém não faço ideia do problema.

Obrigado pela atenção!

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

typedef struct Elemento{

    int Chave;
    char *vet[3];
    struct Elemento *Prox;

}elemento;

int main()
{
elemento *p, *prim, *h, *q;
int i;

prim = NULL;

p = (elemento *) malloc(sizeof(elemento));

h = p;

p->Chave = 1;

p->vet[1] = "Ana";

p->vet[2] = "Bia";

p->vet[3] = "Lia";

printf("\np->vet[1] - %s\n", p->vet[1]);

printf("\np->vet[2] - %s\n", p->vet[2]);

printf("\np->vet[3] - %s\n", p->vet[3]);

// O Erro vem abaixo

for( i = 1 ; i <= 3 ; i++ ){

    q = (elemento *) malloc(sizeof(elemento));

    q->vet[1] = strcat( p->vet[1] , p->vet[1,4-i] );

    q->vet[2] = strcat( p->vet[1] , p->vet[1,4-i] );

    q->vet[3] = strcat( p->vet[1] , p->vet[1,4-i] );

    printf("\nq->vet[1] - %s\n", q->vet[1]);

    printf("\nq->vet[2] - %s\n", q->vet[2]);

    printf("\nq->vet[3] - %s\n", q->vet[3]);

    p = q;

}

return 0;

}