Triangulo superior e inferior de uma matriz a partir da diagonal principal

Pessoal boa tarde, estou tentando criar um programa q crie uma matriz quadrada >=2 , dps de criada o programa vai pegar o triangulo superior e inferior dessa matriz a partir da diagonal principal, mas n estou conseguindo fazer isto,vcs poderiam me falar no q eu estou errando ?

Segue o exemplo abaixo do q o ex esta pedindo.
Ex Matriz:
4 5 6
1 2 3
8 7 6

no caso desta matriz a diagonal principal dela seria ( 4 - 2 - 6) o exercícios quer q eu pegue os triangulo superiores e inferiores desta matriz a partir da sua diagonal principal Triangulo superior: 5 - 6 - 3 Triangulo inferior: 1 - 8 - 7)

Esse foi o código q eu tentei fazer mas n esta dando o q eu quero, se vcs puderem me ajudar eu ficaria grato obg !!!

public static void main(String[] args) {

    Scanner tec = new Scanner(System.in);

    int n1,l,c;

    System.out.println("Digite o tamanho da matriz: ");
    n1 = tec.nextInt();

    int matriz[][] = new int[n1][n1];
    int inferior[] = new int[n1];
    int superior[] = new int[n1];
    int principal[] = new int[n1];


    for(l=0;l<n1;l++){

        for(c=0;c<n1;c++){

            System.out.println("Digite os valores da matriz: ");
            matriz[l][c] = tec.nextInt();

            if(l==c) principal[l] = matriz[l][c];
            if(l != c) superior[c] = matriz[l][c];
        }

    }

    System.out.println("Vetor principal: ");

    for(l=0;l<n1;l++)
        System.out.println(principal[l]+ "\t");

      System.out.println("Superior: ");

        for(l=0;l<n1;l++)
        System.out.println(superior[l]);

    System.out.println("Inferior: ");

    for(c=0;c<n1;c++)
        System.out.println(inferior[c]);

}