#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s;
    cin>>s;
    bool flag=false;
    for(int i=0;i<s.size();i++)
    {
        if(i%2!=0)
        {
            if(s[i]>='A' && s[i]<='Z')
            {
                continue;
            }
            else{
                flag=true;
                break;
            }
        }
        else{
            if(s[i]>='a' && s[i]<='z')
            {
                continue;
            }
            else{
                flag=true;
                break;
            }
        }
    }
    if(flag)
    {
        cout<<"No";
    }
    else{
        cout<<"Yes";
    }
    return 0;
}
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;

template <class T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

#define int long long int
#define pb push_back
#define pi pair<int, int>
#define pii pair<pi, int>
#define fir first
#define sec second
#define DEBUG 0
#define MAXN 5001
#define mod 1000000007

signed main()
{
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n;
  cin >> n;
  vector<int> ans;
  for (int i = 1; i <= sqrt(n); i++)
  {
    if (!(n % i))
    {
      ans.pb(i);
      if (n / i != i)
        ans.pb(n / i);
    }
  }
  sort(ans.begin(), ans.end());
  for (auto const &i : ans)
    cout << i << endl;
  return 0;
}