	#include <iostream>
#include<string>
using namespace std;

int main() {
	string S;
	cin >> S;
	bool unreadable = true;;
	int s = S.length();
	for(int i = 0;i < s;i++) {
		if(i%2==0){
			if(!islower(S[i])){
			unreadable=false;
			}
		}else{
			if(!isupper(S[i])){
				unreadable=false;
			}
		}
	}
		if(unreadable) {
			cout << "Yes";
		}
		else{
			cout << "No";
		}
		
		return 0;
}
#include <iostream>
#include <algorithm>
#include <cmath>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <random>
#include <queue>
#include <stack>
#include <bitset>
#include <cassert>
#include <unordered_map>
#include <iomanip>
#define int long long
#define double long double
#define rep(i,n) for(int i=0;i<n;i++)
#define srep(i,n,m) for(int i=n;i<m;i++)
#define elif else if
#define pi 3.141592653589793
#define prique priority_queue
constexpr auto mod=1000000007;
constexpr auto MOD=1000000000000000;
using namespace std;
int gcd(int a,int b){
    if(b==0) return a;
    return gcd(b,a%b);
}
int lcm(int a,int b){
    return a*b/gcd(a,b);
}
bool prime(int n){
    int cnt=0;
    for(int i=1;i<=sqrt(n);i++){
        if(n%1==0)cnt++;
    }
    if(cnt!=1) return false;
    else return n!=1;
}
void syou(int a,double b){
    cout<<setprecision(a)<<b<<endl;
}
void Ye(){
    cout<<"Yes"<<endl;
}
void No(){
    cout<<"No"<<endl;
}
void YE(){
    cout<<"YES"<<endl;
}
void NO(){
    cout<<"NO"<<endl;
}
struct UnionFind{
    vector<int> r;
    UnionFind(int N){
        r=vector<int>(N,-1);
    }
    int root(int x){
        if(r[x]<0) return x;
        return r[x]=root(r[x]);
    }
    bool unite(int x,int y){
        x=root(x);
        y=root(y);
        if(x==y) return false;
        if(r[x]>r[y]) swap(x,y);
        r[x]+=r[y];
        r[y]=x;
        return true;
    }
    int size(int x){
        return -r[root(x)];
    }
};
struct Edge{
    int to;
    int weight;
};
struct fenwick_tree {
    typedef int T;
    T n;
    vector<T> bit;
    fenwick_tree(T num) : bit(num+1, 0) { n = num; }
    void add(T i, T w) {
        for (T x = i; x <= n; x += x & -x) {
            bit[x] += w;
        }
    }
    T sum(T i) {
        T ret = 0;
        for (T x = i; x > 0; x -= x & -x) {
            ret += bit[x];
        }
        return ret;
    }
    T sum(T left, T right) {
        return sum(right) - sum(left);
    }
};
bool flag;
int n,m,cnt=0,ans=0,aa[330000];
pair<int,int> pp[220000];
string s,sa,ss[220000];
queue<int> que;
vector<int> v;
signed main(){
    cin>>s;
    rep(i,s.size()){
        if(i%2==0&&s[i]<='Z'){
            cout<<"No"<<endl;
            return 0;
        }elif(i%2==1&&s[i]>='a'){
            cout<<"No"<<endl;
            return 0;
        }
    }
    cout<<"Yes"<<endl;
}