linear-time construction