#include <bits/stdc++.h>
 
#define _overload(_1,_2,_3,name,...) name
#define _rep(i,n) _range(i,0,n)
#define _range(i,a,b) for(int i=int(a);i<int(b);++i)
#define rep(...) _overload(__VA_ARGS__,_range,_rep,)(__VA_ARGS__)
 
 
#define _all(arg) begin(arg),end(arg)
#define uniq(arg) sort(_all(arg)),(arg).erase(unique(_all(arg)),end(arg))
#define getidx(ary,key) lower_bound(_all(arg),key)-begin(arg)
 
using namespace std;
 
string recover(string s){
	int n=s.size();
	
	int na=1,nb=1,nc=1;
	rep(i,n){
		if(i+2<n && s.substr(i,3)=="ABC"){
			i+=2;
			continue;
		}
		if(s[i]=='A') na=0;
		if(s[i]=='B') nb=0;
		if(s[i]=='C') nc=0;
	}
	if(na+nb+nc!=1) return "";
	char nxt;
	if(na) nxt='A';
	if(nb) nxt='B';
	if(nc) nxt='C';
	
	string ns="";
	rep(i,n){
		if(i+2<n && s.substr(i,3)=="ABC")
			ns+=nxt,i+=2;	
		else 
			ns+=s[i];
	}
	//cout << ns << endl;
	return ns;
}
 
 
int main(void){
	string s;
	cin >> s;
	while(s.size()>3) s=recover(s);
	if(s=="ABC")
		puts("Yes");
	else
		puts("No");
	return 0;
}