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 edu893
{
	BufferedReader in;
	PrintWriter ob;
	StringTokenizer st;
	int spectator = 0;
	public static void main(String[] args) throws IOException {
		new edu893().run();
	}
	void run() throws IOException {
		//in=new BufferedReader(new FileReader("input.txt"));
		in=new BufferedReader(new InputStreamReader(System.in));
		ob=new PrintWriter(System.out);
		solve();
		ob.flush();
	}
	void solve() throws IOException {
		int n = ni();
		boolean a[] = new boolean[4];
		a[1] = a[2] = true;
		spectator = 3;
		for (int i=1; i<=n ; i++ ) {
			int winner = ni();
			if(a[winner] == true) {
				if(winner == 1)
					swap(winner , a , 1 , 2 , 3);
				else if(winner == 2) 
					swap(winner , a , 2 , 1 , 3);
				else if(winner == 3)
					swap(winner , a , 3 , 1 , 2);
			}
			else  {
				ob.println("NO");
				return;
			}
		}
		ob.println("YES");
		return;
	}
	void swap(int winner , boolean a[] , int x , int y , int z) {
		if(winner == x) {
					if(a[y] == true) {
						spectator = 2;
						a[y] = false;
						a[z] = true;
					}
					else if(a[z] == true) {
						spectator = 3;
						a[z] = false;
						a[y] = true;
					}
				}
				
	}
	String ns() throws IOException {
		return nextToken();
	}
	long nl() throws IOException {
		return Long.parseLong(nextToken());
	}
	int ni() throws IOException {
		return Integer.parseInt(nextToken());
	}
	double nd() throws IOException {
		return Double.parseDouble(nextToken());
	} 
	String nextToken() throws IOException {
		if(st==null || !st.hasMoreTokens())
			st=new StringTokenizer(in.readLine());
		return st.nextToken();
	}
	int[] nia(int start,int b) throws IOException {
		int a[]=new int[b];
		for(int i=start;i<b;i++)
			a[i]=ni();
		return a;
	}
	long[] nla(int start,int n) throws IOException {
		long a[]=new long[n];
		for (int i=start; i<n ;i++ ) {
			a[i]=nl();
		}
		return a;
	}
}