99
1
3
2
2
3
1
1
3
3
3
3
3
3
1
1
3
3
3
3
1
1
3
2
1
1
1
1
1
1
1
3
2
2
2
1
3
3
1
1
3
2
1
3
3
1
2
3
3
3
1
2
2
2
3
3
3
3
3
3
2
2
2
2
3
3
3
1
1
3
2
1
1
2
2
2
3
3
2
1
1
2
2
1
3
2
1
1
2
3
3
3
3
2
2
2
2
2
1
3
 1
3
 2
2
1
 5
2
3
3
1
1
 5
2
2
2
2
2
 6
2
2
2
3
1
3
 5
2
3
3
3
3
 1
2
 100
2
2
1
3
1
3
3
1
1
3
1
1
3
2
1
3
1
1
3
3
2
2
3
1
1
2
3
2
2
3
1
1
2
3
2
1
2
2
3
3
1
1
3
1
2
1
3
1
1
3
2
2
2
1
1
1
3
1
3
2
1
2
2
2
3
3
2
1
1
3
3
2
1
2
1
1
3
1
2
3
2
3
3
3
2
2
1
3
1
2
3
1
2
3
3
1
2
1
3
1
 4
1
2
2
1
 3
3
3
1
 8
1
1
1
1
1
1
1
1
 5
1
1
1
1
3
 3
2
2
3
 3
2
2
2
 2
2
2
 4
2
3
3
3
 2
3
2
 100
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
 7
2
2
2
2
2
2
2
 3
2
1
1
 10
2
3
3
3
3
2
2
2
3
2
 3
3
1
3
 2
3
1
 3
1
2
3
 42
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
 2
1
3
 100
2
3
1
2
3
3
3
1
1
1
1
3
3
3
3
1
2
3
3
3
3
3
3
3
1
2
2
2
3
1
1
3
3
3
3
3
3
3
3
1
2
3
3
3
1
1
1
1
3
3
3
3
1
2
3
1
2
2
2
3
3
2
1
3
3
1
2
3
1
1
1
2
2
2
3
1
1
1
1
1
1
3
2
2
2
2
2
2
3
1
2
2
2
2
2
3
3
2
1
1
 3
3
2
2
 3
3
2
3
 2
3
3
 3
2
2
1
 5
1
1
2
2
3
 3
1
3
1
 3
1
1
3

YES
 NO
 NO
 NO
 YES
 NO
 YES
 YES
 NO
 NO
 NO
 YES
 NO
 NO
 YES
 YES
 YES
 NO
 YES
 YES
 NO
 NO
 NO
 NO
 NO
 YES
 YES
 YES
 NO
 NO
 NO
 YES
 NO
 NO
 NO

import java.io.*;
import java.util.*;

public class A {

    void solve() {
        int n = in.nextInt();
        HashSet<Integer> playing = new HashSet<>();
        playing.add(1);
        playing.add(2);
        for (int i = 0; i < n; i++) {
            int winner = in.nextInt();
            if (!playing.contains(winner)) {
                out.println("NO");
                return;
            }
            int nextPlayer = 0;
            for (int j = 1; j <=3 ; j++) {
                if (!playing.contains(j)) {
                    nextPlayer = j;
                    break;
                }
            }
            playing.add(nextPlayer);
            for (int j = 1; j <=3 ; j++) {
                if (j != winner && j != nextPlayer) {
                    playing.remove(j);
                }
            }
        }
        out.println("YES");
    }

    Scanner in;
    PrintWriter out;

    void run() {
        try {
            in = new Scanner(new File("A.in"));
            out = new PrintWriter(new File("A.out"));

            solve();

            out.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

    void runIO() {

        in = new Scanner(System.in);
        out = new PrintWriter(System.out);

        solve();

        out.close();
    }

    class Scanner {
        BufferedReader br;
        StringTokenizer st;

        public Scanner(File f) {
            try {
                br = new BufferedReader(new FileReader(f));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }

        public Scanner(InputStream f) {
            br = new BufferedReader(new InputStreamReader(f));
        }

        String next() {
            while (st == null || !st.hasMoreTokens()) {
                String s = null;
                try {
                    s = br.readLine();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                if (s == null)
                    return null;
                st = new StringTokenizer(s);
            }
            return st.nextToken();
        }

        private boolean isSpaceChar(int c) {
            return !(c >= 33 && c <= 126);
        }

        private int skip() {
            int b;
            while ((b = read()) != -1 && isSpaceChar(b)) ;
            return b;
        }

        private int read() {
            int res = -1;
            try {
                res = br.read();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return res;
        }

        char[] nextCharArray(int size) {
            char[] buf = new char[size];
            int b = skip(), p = 0;
            while (p < size && !(isSpaceChar(b))) {
                buf[p++] = (char) b;
                b = read();
            }
            return size == p ? buf : Arrays.copyOf(buf, p);
        }

        char[][] nextCharMap(int n, int m) {
            char[][] map = new char[n][];
            for (int i = 0; i < n; i++) {
                map[i] = nextCharArray(m);
            }
            return map;
        }

        boolean hasMoreTokens() {
            while (st == null || !st.hasMoreTokens()) {
                String s = null;
                try {
                    s = br.readLine();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                if (s == null)
                    return false;
                st = new StringTokenizer(s);
            }
            return true;
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }
    }

    public static void main(String[] args) {
        new A().runIO();
    }
}