count_occ([], []).
count_occ([H|T], R) :-
count_occ(T, Temp),
increment(Temp, H, R).
increment([], E, [[E,1]]).
increment([[H,C]|T], H, [[H,CplusOne]|T]) :-
increment([[H,C]|T], E, [[H,C]|R]) :-
H \= E,
increment(T, E, R).
:- count_occ([a,b,b,a,c,d,a,b,e,b,d,c], R), writeln(R).
Y291bnRfb2NjKFtdLCBbXSkuCmNvdW50X29jYyhbSHxUXSwgUikgOi0KICAgIGNvdW50X29jYyhULCBUZW1wKSwKICAgIGluY3JlbWVudChUZW1wLCBILCBSKS4KCmluY3JlbWVudChbXSwgRSwgW1tFLDFdXSkuCmluY3JlbWVudChbW0gsQ118VF0sIEgsIFtbSCxDcGx1c09uZV18VF0pIDotCiAgICBDcGx1c09uZSBpcyBDICsgMS4KaW5jcmVtZW50KFtbSCxDXXxUXSwgRSwgW1tILENdfFJdKSA6LQogICAgSCBcPSBFLAogICAgaW5jcmVtZW50KFQsIEUsIFIpLgogICAgCjotIGNvdW50X29jYyhbYSxiLGIsYSxjLGQsYSxiLGUsYixkLGNdLCBSKSwgd3JpdGVsbihSKS4K