int [可変][固定]って感じの2次元配列を作りたいんですが、どうすればできますか?

List <int []> L = new ArrayList<int[]>();
int [] a={1,2,3};
while(1){
  a[0]++;
  L.add(a);
}
ってやって上手く動くじゃんと思ったら、aのアドレスを何個もって中身は覚えてないし、
そのせいで全部同じ値だしでどうすりゃいいの?