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