Permutação de um arraylist bidimensional

Eu estou tentando fazer uma lista de matriz bidimensional que é preenchida com todas as combinações possíveis de digamos 1,2,3,4 recursivamente. sem duplas.

por exemplo.
1,0,0
2,0,0
3,0,0
4,0,0
1,2,0
1,3,0
1,4,0
1,2,3
etc ...

até agora eu tenho

//this gives me all my numbers
for(int i =0;i<arraySize;i++)
index[i] = i;

// and is the part that make the combinations
for(int i = 0;i<arraySize;i++){
   for(int x = 0;x<k;x++)
      combinations.get(i).set(x, index[i]);

EDIT: também não estou tentando imprimir o resultado que eu quero armazenar o resultado em uma matriz de 2 dimensional

questionAnswers(3)

yourAnswerToTheQuestion