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 C# (judge verdict: Accepted)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace test
{

    class Program
    {
        static void Main(string[] args)
        {
            List<string> resultList = new List<string>();

            string input;
            while ((input = Console.ReadLine()) != null)
            {
                List<int> numList = new List<int>();
                foreach (char c in input)
                {
                    numList.Add(int.Parse(c.ToString()));
                }

                int sum = 0;
                for (int i = 0; i < 10; i++)
                {
                    sum += GetCombination(9, i) * numList[i];
                }

                resultList.Add(sum.ToString().Substring(sum.ToString().Length - 1));

            }

            foreach (string s in resultList)
            {
                Console.WriteLine(s);
            }


        }

        static int GetCombination(int n, int k)
        {
            int mother = 1;
            int child = 1;
            if (k > n / 2)
            {
                k = n - k;
            }

            for (int i = 1; i <= k; i++)
            {
                child *= (n - i + 1);
                mother *= i;
            }

            return child / mother;
        }
        
    }
}