#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#include <queue>
#include <cstdio>
#include <ctime>
#include <assert.h>
#include <chrono>
#include <random>
#include <numeric>
#include <set>
#include <deque>
#include <stack>
using namespace std;
typedef long long int ll;
typedef unsigned long long ull;

mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ll myRand(ll B) {
    return (ull)rng() % B;
}

int main(){
    cin.tie(nullptr);
    ios::sync_with_stdio(false);
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    string s; cin >> s;
    while(1){
        if(s=="ABC"){
            printf("Yes\n");
            return 0;
        }
        int n=s.size();
        bool change=0;
        for(int i=0;i+2<n;i++){
            if(s.substr(i,3)=="ABC"){
                change=true;
                if(i==0){
                    for(int j=i;j<s.size();j++){
                        if(j+2<s.size()&&s.substr(j,3)=="ABC"){
                            s=s.substr(0,j)+"A"+s.substr(j+3);
                        }
                        else if(s[j]=='A'){
                            printf("No\n");
                            return 0;
                        }
                    }
                }
                else if(s.substr(n-3,3)=="ABC"){
                    for(int j=0;j<s.size();j++){
                        if(j+2<s.size()&&s.substr(j,3)=="ABC"){
                            s=s.substr(0,j)+"C"+s.substr(j+3);
                        }
                        else if(s[j]=='C'){
                            printf("No\n");
                            return 0;
                        }
                    }
                }
                else{
                    for(int j=0;j<s.size();j++){
                        if(j+2<s.size()&&s.substr(j,3)=="ABC"){
                            s=s.substr(0,j)+"B"+s.substr(j+3);
                        }
                        else if(s[j]=='B'){
                            printf("No\n");
                            return 0;
                        }
                    }
                }
                break;
            }
        }
        if(!change)break;
    }
    printf("No\n");
}

