Problem: It's not the rivers that you might be thinking about. The question revolves around the concept of digital rivers.
A digital river is a sequence of numbers where the number 
following n is n plus the sum of its digits.
FOR EXAMPLE

12345 is followed by 12360 since 1+2+3+4+5=15 and so
  12345 + 15 gives 12360.
similarly 145 is followed by 155.

  If the unit's digit of a digital river is 'M' we will call it river 'M' .for example 231 would be called river 1.

river 480 is the sequence beginning {480,492,507,519....} 
river 483 is the sequence beginning 
  {483,498,519,....}.

  normal streams and rivers can meet, and the same is true for digital rivers . This happens when two digital rivers share some of the same values.
FOR EXAMPLE:

river 480 meets river 483 at 519.
river 480 meets river 507 at 507 and never meets river 481.

  Every digital river will eventually meet river 1,river 3 or river 9.
  Write a program that can determine for a given integer n the value where river n first meets one of these three rivers.

Input
  
 The input may contain multiple test cases. Each test case occupies a separate line and contains an integer n (1 ≤ n ≤ 16384). A test case with value of 0 for n terminates the input and this test case must not be processed.

Output
  
For each test case in the input first output the test case number(starting from 1)as shown in the sample output. Then on a separate line output the line "first meets river x at y".Here y is the lowest value where river n first meets river x (x= 1 or 3 or 9).If river n meets river x at y for more than one value of x,output the lowest value.print a blank line between two consecutive test cases.

  Input:
  86
  12345
  0
  
  Output:
  Case #1
  first meets river 1 at 101
  
  Case #2
  first meets river 3 at 12423

Solution (in PYTHON):

Solution:
#Merging Rivers


def main():

        N = int(raw_input())
        counter = 1
        first_time = True

        while(N != 0):

                if(first_time == False):
                        print

                first_time = False
                last_digit = N%10

                while(last_digit != 1 and last_digit != 3 and last_digit != 9):
                        N+=sum([int(i) for i in str(N)])
                        last_digit = N%10

                print "Case #%d" % counter
                print "first meets river %d at %d" % (N%10,N)

                N = int(raw_input())
                counter+=1

main()