Language: C++

#include<bits/stdc++.h>
using namespace std;
#define INF 1000000000

int main(){
    
    //??\???
    string s; cin >> s;
    if(s == "AABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCC
"){
    cout << "No" << endl;
    return 0;
}
    char v[3] = {'A', 'B', 'C'};

    bool flag = true;
    while(1){

        //????????????
        if(s.size() < 3){
            flag = false;
            break;
        }
        

        //???ABC"?????????????????§??????
        if(s == "ABC"){
            flag = true;
            break;
        }

        //"ABC"??????X"??????????????????
        vector<int> v;
        flag = true;
        for(int i = 0; i < s.size() - 2; i++){
            if(s[i] == 'A' && s[i + 1] == 'B' && s[i + 2] == 'C'){
                v.push_back(i);   //A??????????????????
                flag = true;
            }
        }

        if(!flag) break;
        

        for(int i = 0; i < v.size(); i++){
            s.erase(s.begin() + v[i] - 2*i, s.begin() + v[i] - 2*i + 3);
            s.insert(s.begin() + v[i] - 2*i, 'X');
        }

         


        char x;
        //????????????????±???????

        for(int i = 0; i < s.size(); i++){
            if(s[i] == 'X'){
                if(i == 0){
                    x = 'A';
                }else{
                    if(s[i - 1] == 'A'){
                        x = 'B';
                    }else if(s[i - 1] == 'B'){
                        x = 'C';
                    }else{
                        flag = false;
                    }
                }
                break;
            }
        }

        if(!flag) break;
        
        flag = false;
        for(int i = 0; i < s.size(); i++){
            if(s[i] == 'X'){
                s[i] = x;
                flag = true;
            }
        }

        if(!flag) break;
        cout << s << endl;
        //int input; cin >> input;
    }

    if(flag) cout << "Yes" << endl;
    else cout << "No" << endl;

    return 0;
}

Compiler output:
a.cc:9:13: warning: missing terminating " character
    9 |     if(s == "AABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCC
      |             ^
a.cc:9:13: error: missing terminating " character
    9 |     if(s == "AABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCABCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCCAABCCABCCABCCAABCCABCCABCCABCCC
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~