D algorithm