public class Solution {
public ArrayList<Integer> solve(ArrayList<Integer> a) {
HashMap<Integer, LinkedList<Integer>> hm= new HashMap<>();
for(int i=0; i<a.size(); i++) {
int x=a.get(i);
if(hm.containsKey(x)) {
LinkedList< Integer> ll = hm.get(x);
if(ll.size()==0) {
ll.add(x);
continue;
}
int ix=ll.get(0);
a.set(ix, x+1);
ll.remove();
ll.addLast(i);
if(hm.containsKey(x+1)) {
LinkedList< Integer> l = hm.get(x+1);
if(l.size()==0) {
l.add(x+1);
continue;
}
for(int j=0; j<l.size(); j++) {
if(l.get(j)>=ix) {
l.add(j, ix);
break;
}
}
} else {
LinkedList< Integer> l = new LinkedList<>();
l.add(ix);
hm.put(x+1, l);
}
} else {
LinkedList< Integer> l = new LinkedList<>();
l.add(i);
hm.put(x, l);
}
}
return a;
}
}