#include <algorithm>
#include <cmath>
#include <cstdio>
#include <deque>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>

using namespace std;

typedef long long ll;

#define MOD 1000000007

int main() {
  string s;
  cin >> s;
  bool ok = false;
  if (s == "hi") ok = true;
  if (s == "hihi") ok = true;
  if (s == "hihihi") ok = true;
  if (s == "hihihihi") ok = true;
  if (s == "hihihihihi") ok = true;
  cout << (ok ? "Yes" : "No") << endl;
  return 0;
}
#include<bits/stdc++.h>
#include<boost/variant.hpp>
using namespace std;
typedef long long ll;
typedef vector<boost::variant<bool, ll, int, string, double, char*, const char*>> anys;
template<typename T> inline void pr(const vector<T> &xs){
	for(int i=0; i<xs.size()-1; i++) cout<<xs[i]<<" ";
	(xs.empty()?cout:(cout<<xs[xs.size()-1]))<<endl;
}
#ifdef DEBUG
#define debug(...) pr(anys{__VA_ARGS__})
#define debugv(x) pr((x))
#else
#define debug(...)
#define debugv(x)
#endif

int main(){
	string S;
	cin >> S;
	string ans = S.size()%2==0 ? "Yes" : "No";
	for(int i=0; i<S.size(); i++){
		if(S[i]!=(i%2==0?'h':'i')) ans = "No";
	}
	cout << ans << endl;

	return 0;
}
