You are given three strings A, B and C. Check whether they form a word chain.

More formally, determine whether both of the following are true:

* The last character in A and the initial character in B are the same.
* The last character in B and the initial character in C are the same.



If both are true, print `YES`. Otherwise, print `NO`.

Constraints

* A, B and C are all composed of lowercase English letters (`a` - `z`).
* 1 ≤ |A|, |B|, |C| ≤ 10, where |A|, |B| and |C| are the lengths of A, B and C, respectively.

Input

Input is given from Standard Input in the following format:


A B C


Output

Print `YES` or `NO`.

Examples

Input

rng gorilla apple


Output

YES


Input

yakiniku unagi sushi


Output

NO


Input

a a a


Output

YES


Input

aaaaaaaaab aaaaaaaaaa aaaaaaaaab


Output

NO
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ABC060SimpleKnapsack
{
    class Program
    {
        static void Main(string[] args)
        {
            int N, W;
            string[] vals = Console.ReadLine().Split(' ');
            N = int.Parse(vals[0]);
            W = int.Parse(vals[1]);

            int[] w = new int[N + 1];
            int[] v = new int[N + 1];

            for(int i=1; i <= N; i++)
            {
                vals = Console.ReadLine().Split(' ');
                w[i] = int.Parse(vals[0]);
                v[i] = int.Parse(vals[1]);
            }


            W = W / (w[1] + 3) * 3;
            
            for(int i=1; i <= N; i++)
            {
                w[i] -= w[1];
            }

             
            int[,] dp = new int[N + 1, W + 1];
            //int[,] dp = new int[N + 1, 3 * N + 1];


            for (int i = 1; i <= N; i++)
            {
                for(int j = 1; j <= W; j++)
                {
                    dp[i,j] = dp[i-1,j];
                    if(w[i] > j)
                    {
                        continue;
                    }
                    if(dp[i-1, j-w[i]] + v[i] > dp[i-1, j])
                    {
                        dp[i, j] = dp[i - 1, j - w[i]] + v[i];
                    }
                }
            }

            Console.WriteLine(dp[N, W]);
        }
    }
}
