Problem:
Extended Euclid Algorithm

Given positive integers a and b, find the integer solution (x, y) to ax + by = gcd(a, b), where gcd(a, b) is the greatest common divisor of a and b.

Input

a b

Two positive integers a and b are given separated by a space in a line.

Output

Print two integers x and y separated by a space. If there are several pairs of such x and y, print that pair for which |x| + |y| is the minimal (primarily) and x ≤ y (secondarily).

Constraints

1 ≤ a, b ≤ 109

Sample Input 1

4 12

Sample Output 1

1 0

Sample Input 2

3 8

Sample Output 2

3 -1

Solution in Scala (judge verdict: Accepted)

import scala.io.Source.stdin

object Main {

  def euclid(m:Int, n:Int):(Int, Int) = {
    if(m==0) {
      (0,1)
    } else {
      val (x,y) = euclid(n%m,m)
      if(x*m+y*n == x*n+y*m) {
        if(y-(n/m)*x < x)
          (y-(n/m)*x, x)
        else
          (x, y-(n/m)*x)
      } else {
        (y-(n/m)*x, x)
      }
    }
  }
  def main(args:Array[String]) =
    stdin.getLines.foreach { s=>
      val n = s.split(" ").map(_.toInt)
      val (x,y) = euclid(n(0),n(1))
      println(x+" "+y)
    }
}