Problem: 2049C - MEX Cycle
Language: c++17 

Code 1:
#include <bits/stdc++.h>

using namespace std;



int main() {

    int t ;cin>>t; // You can modify t for multiple test cases

    while (t--) {

        int n, x, y;

        cin >> n >> x >> y;



        vector<int> a(n, 0); // Initialize with 0



        if (y==n) {

            for (int i = 0; i < n; i++) {

                a[i] = (i % 2 == 0) ? 0 : 1;

            }

            if (n % 2) {

                a[0] = 2;

            

            if (a[x - 1] == a[y - 1]) {

                if (a[x - 1] == 0) {

                    a[x - 1] = 2;

                    if (x == 3) {

                        a[x - 2] = 0;

                        a[0] = 1;

                    }

                } else if (a[x - 1] == 1) {

                    a[y - 1] = 2;

                }

            }

        }

        else{

            if (a[x - 1] == a[y - 1]) {

            a[x-1] = 2;

            }

        }

        } else {

            for (int i = 0; i < n; i++) {

                a[i] = (i % 2 == 0) ? 0 : 1;

            }

            if (n % 2) {

                a[n - 1] = 2;

            

            if (a[x - 1] == a[y - 1]) {

                if (a[x - 1] == 0) {

                    a[y - 1] = 2;

                    if (y + 1 < n && a[y + 1] == 2) { // Avoid out-of-bounds access

                        a[y] = 0;

                        a[y+1] = 1;

                    }

                } else if (a[x - 1] == 1) {

                    a[x - 1] = 2;

                }

            }

        }else{

            if (a[x - 1] == a[y - 1]) {

            a[x-1] = 2;

            }

        }

        }



        for (int i = 0; i < n; i++) {

            cout << a[i] << " ";

        }

        cout << endl;

    }



    return 0;

}



Code 2:
#include <bits/stdc++.h>

using namespace std;



int main() {

    int t ;cin>>t; // You can modify t for multiple test cases

    while (t--) {

        int n, x, y;

        cin >> n >> x >> y;



        vector<int> a(n, 0); // Initialize with 0



        if (y==n) {

            for (int i = 0; i < n; i++) {

                a[i] = (i % 2 == 0) ? 0 : 1;

            }

            if (n % 2) {

                a[0] = 2;

            

            if (a[x - 1] == a[y - 1]) {

                if (a[x - 1] == 0) {

                    a[x - 1] = 2;

                    if (x == 3) {

                        a[x - 2] = 0;

                    }

                } else if (a[x - 1] == 1) {

                    a[y - 1] = 2;

                }

            }

        }

        else{

            a[x-1] = 2;

        }

        } else {

            for (int i = 0; i < n; i++) {

                a[i] = (i % 2 == 0) ? 0 : 1;

            }

            if (n % 2) {

                a[n - 1] = 2;

            

            if (a[x - 1] == a[y - 1]) {

                if (a[x - 1] == 0) {

                    a[y - 1] = 2;

                    if (y + 1 < n && a[y + 1] == 2) { // Avoid out-of-bounds access

                        a[y] = 0;

                    }

                } else if (a[x - 1] == 1) {

                    a[x - 1] = 2;

                }

            }

        }else{

            a[x-1] = 2;

        }

        }



        for (int i = 0; i < n; i++) {

            cout << a[i] << " ";

        }

        cout << endl;

    }



    return 0;

}



Answer: 1