Problema no armazenamento em ArrayList

Olá a todos,

estou desenvolvendo um programa que cria um grafo de todos os estados possíveis para um jogo da velha. No decorrer do desenvolvimento estou com o seguinte código:

[code]
int[] elemento = new int[9];
List ars = new ArrayList();
List estagios = new ArrayList();

    int i = 0;
	//Cria todos os elementos possíveis
	for(int um = -1; um < 2; um++){
		for(int dois = -1; dois < 2; dois++){
			for(int tres = -1; tres < 2; tres++){
				for(int quatro = -1; quatro < 2; quatro++){
					for(int cinco = -1; cinco < 2; cinco++){
						for(int seis = -1; seis < 2; seis++){
							for(int sete = -1; sete < 2; sete++){
								for(int oito = -1; oito < 2; oito++){
									for(int nove = -1; nove < 2; nove++){
										elemento[0] = um;
										elemento[1] = dois;
										elemento[2] = tres;
										elemento[3] = quatro;
										elemento[4] = cinco;
										elemento[5] = seis;
										elemento[6] = sete;
										elemento[7] = oito;
										elemento[8] = nove;
                                                                            Elemento e = new Elemento(elemento);
										estagios.add(e);
                                                                            if(i > 1200)
                                                                                    System.out.println(estagios.get(6) +"\n"+ estagios.get(7));
                                                                            //System.out.println(e.toString());
                                                                            System.out.println(estagios.get(i)+" , valor de i= "+ i+"\n");
                                                                            i++;
                                                                            
                                                                    }
								}
							}
						}
					}
				}
			}
		}
	}[/code]

Todos os elementos de impressão acima são apenas para que eu possa testar e ver se os elementos estão sendo gravados de forma correta no arraylist, o problema é que os elementos estão sendo gerados corretamente, porém, ao amazenar no arraylist, todos os elementos deste estão sendo gravados como o último elemento que entrou. Por exemplo, segue um trecho da impressão gerada por este código:

(1,1,1,1,1,1,1,1,-1)
(1,1,1,1,1,1,1,1,-1)
(1,1,1,1,1,1,1,1,-1) , valor de i= 19680

(1,1,1,1,1,1,1,1,0)
(1,1,1,1,1,1,1,1,0)
(1,1,1,1,1,1,1,1,0) , valor de i= 19681

(1,1,1,1,1,1,1,1,1)
(1,1,1,1,1,1,1,1,1)
(1,1,1,1,1,1,1,1,1) , valor de i= 19682

sendo que eu queria que a impressão fosse:

(Um elemento armazenado na posição 6 da lista)
(Um elemento armazenado na posição 7 da lista)
(1,1,1,1,1,1,1,1,-1) , valor de i= 19680

(Um elemento armazenado na posição 6 da lista)
(Um elemento armazenado na posição 7 da lista)
(1,1,1,1,1,1,1,1,0) , valor de i= 19681

(Um elemento armazenado na posição 6 da lista)
(Um elemento armazenado na posição 7 da lista)
(1,1,1,1,1,1,1,1,1) , valor de i= 19682

Ou seja, o resultado final desta lista é que todos os elementos são: (1,1,1,1,1,1,1,1,1), ao invés de serem diferentes, ou todas as combinações possíveis.

Conto com vocês.