awk '{n=++a[$1];b[$1,n]=$2}END{for(c in a)for(n=1;n<=a[c];n++)for(z=1;z<=n;z++)print b[c,z],c,b[c,n]}' file1|sort -k 2,2 -k 1,1 -k 3,3
A aa A A aa B A aa C B aa B B aa C C aa C X bb X X bb Y X bb Z Y bb Y Y bb Z Z bb Z O cc O O cc P O cc Q P cc P P cc Q Q cc Q