IMO олимпиада по математике 1996 года | Казахстанские олимпиады

Пусть S={0,1,2,3,}S=\left\{ 0,1,2,3,\ldots \right\} — множество неотрицательных целых чисел. Найти все функции ff определенные на SS и принимающие свои значения в SS, такие, что f(m + f(n)) = f(f(m)) + f(n)f\left( m\text{ }+\text{ }f\left( n \right) \right)\text{ }=\text{ }f\left( f\left( m \right) \right)\text{ }+\text{ }f\left( n \right) для всех m,nm,n из SS.