head,tail -> first,rest