Problem:
Score : 100 points

Problem Statement

A Hitachi string is a concatenation of one or more copies of the string hi.

For example, hi and hihi are Hitachi strings, while ha and hii are not.

Given a string S, determine whether S is a Hitachi string.

Constraints

The length of S is between 1 and 10 (inclusive).

S is a string consisting of lowercase English letters.

Input

Input is given from Standard Input in the following format:

S

Output

If S is a Hitachi string, print Yes; otherwise, print No.

Sample Input 1

hihi

Sample Output 1

Yes

hihi is the concatenation of two copies of hi, so it is a Hitachi string.

Sample Input 2

hi

Sample Output 2

Yes

Sample Input 3

ha

Sample Output 3

No

Solution in C# (Mono 4.6.2.0) (judge verdict: Accepted)

//==========================================c#
using System; //Console, IComparable
using System.IO; //StreamWriter 
using System.Linq; //Select(), Where(), OrderBy(), Count()
using System.Collections.Generic; //List<T>

public class Run{
    private static class gv{
        public static string input;
    }
    
    public void build(){
        IOC io = new IOC();
        
        gv.input = io._string;
    }
    
    public void fail(){
        Console.WriteLine("No");
    }
    
    public void solve(){
        StreamWriter so = new StreamWriter(Console.OpenStandardOutput());
        
        var slen = gv.input.Length;
        if ((slen&1) == 1) {
            fail();
            return;
        }
        for (int i = 0; i < slen; i += 2) {
            if (gv.input.Substring(i,2) == "hi"){
                continue;
            }
            fail();
            return;
        }
        
        Console.WriteLine("Yes");
    }
}

class Program { 
    static void Main() { 
        var run = new Run();
        run.build();
        run.solve();
        
        
        
        
    } 
}

public class IOC{
    public int _int{get{return int.Parse(Console.ReadLine());}}
    public int[] _inta{get{return Array.ConvertAll(Console.ReadLine().Split(), int.Parse);}}
    public long _long{get{return long.Parse(Console.ReadLine());}}
    public long[] _longa{get{return Array.ConvertAll(Console.ReadLine().Split(), long.Parse);}}
    public string _string{get{return Console.ReadLine();}}
    public string[] _stringa{get{return (Console.ReadLine().Split());}}
    public double _double{get{return double.Parse(Console.ReadLine());}}
    public double[] _doublea{get{return Array.ConvertAll(Console.ReadLine().Split(), double.Parse);}}
}