hard dp

.