Problem:
一番下の行の数字は?

次のような数字のパターンを作ることを考えます。

4 8 2 3 1 0 8 3 7 6
2 0 5 4 1 8 1 0 3
2 5 9 5 9 9 1 3
7 4 4 4 8 0 4
1 8 8 2 8 4
9 6 0 0 2
5 6 0 2
1 6 2
7 8
5

このパターンは以下の規則に従っています。

A B
C

という数字の並びにおいて、C は A + B の 1 の位の数字である。たとえば、

9 5
4

では、9 + 5 = 14 の 1 の位の数字、すなわち 4 が 9 と 5 の斜め下に並べられます。また、

2 3
5

では、2 + 3 = 5 の 1 の位の数字、すなわち 5 が 2 と 3 の斜め下に並べられます。

一番上の行の 10 個の整数を読み込んで、一番下の行の 1 個の数を出力するプログラムを作成してください。

Input

入力は複数のデータセットからなります。各データセットとして、一番上の行の 10 個の数字が文字列として１行に与えられます。

データセットの数は 20 を超えません。

Output

データセットごとに、一番下の行の数字を１行に出力します。

Sample Input

4823108376
1234567890
0123456789

Output for the Sample Input

5
6
4

Solution in JAVA (judge verdict: Accepted)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String line = "";

		while ((line = br.readLine()) != null) {

			int[] top = new int[10];
			for (int i = 0; i < 10; i++) {
				top[i] = line.charAt(i) - 48;
			}
			System.out.println(getBottommost(top));
		}
	}

	public static int getBottommost(int[] top) {

		if (top.length == 1) {
			return top[0];
		}

		int[] bottom = null;
		do {
			bottom = getBottom(top);
			top = bottom;
		} while (bottom.length > 1);

		return bottom[0];
	}

	public static int[] getBottom(int[] top) {

		if (top.length == 1) {
			return top;
		}

		int[] bottom = new int[top.length - 1];
		for (int i = 0; i < top.length - 1; i++) {
			bottom[i] = (top[i] + top[i + 1]) % 10;
		}
		return bottom;
	}
}