<pre>import java.math.BigInteger;
import java.util.Scanner;

public class Fox
{
	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		//System.out.println(Integer.MAX_VALUE);
		//System.out.println(Long.MAX_VALUE);

		Scanner sc = new Scanner(System.in);
		while (sc.hasNext())
		{
			String line = sc.nextLine();
			if (line.length() == 3 &amp;&amp; line.compareTo(&quot;END&quot;) == 0)
			{
				break;
			}

			//long t = System.currentTimeMillis();
			workFox(line);
			//System.out.println(System.currentTimeMillis() - t+&quot; ms&quot;);
		}

		sc.close();
	}

	public static void workFox(String snumber)
	{
		if (snumber.length() &lt; 10)
		{
			workInt(snumber);
		} else if (snumber.length() &lt; 19)
		{
			workLong(snumber);
		} else
		{
			workBig(snumber);

		}
	}

	public static void workInt(String snumber)
	{
		int number = Integer.parseInt(snumber);
		int count = computeNumbers(snumber);

		int j;
		for (int i = number;; i--)
		{
			j = computeNumbers(&quot;&quot; + i);

			if (j == count + 1)
			{
				System.out.println(i);
				return;
			}
		}
	}

	public static void workLong(String snumber)
	{
		long number = Long.parseLong(snumber);
		int count = computeNumbers(snumber);

		int j;
		for (long i = number;; i--)
		{
			j = computeNumbers(&quot;&quot; + i);

			if (j == count + 1)
			{
				System.out.println(i);
				return;
			}
		}
	}

	public static void workBig(String snumber)
	{
		BigInteger number = new BigInteger(snumber);
		int count = computeNumbers(snumber);

		int j;
		for (BigInteger i = number;; i = i.subtract(BigInteger.ONE))
		{
			j = computeNumbers(i.toString());

			if (j == count + 1)
			{
				System.out.println(i);
				return;
			}
		}
	}

	public static int computeNumbers(String s)
	{
		int count = 0;

		int i;
		for (char c : s.toCharArray())
		{
			if (c == '-')
			{
				continue;
			}

			i = Integer.parseInt(&quot;&quot; + c);
			count += i;
		}

		return count;
	}

}
</pre>
