#include <bits/stdc++.h>
using namespace std;
int solve(vector<int>& arr){
int f_1 = 0;
int f_2 = 0;
int f_3 = 0;
int n = arr.size();
int c = 0;
for(int i = 0;i<n;i++){
if(arr[i]==1){
c+=f_2 + f_3;
}else if(arr[i]==2){
c+=f_3;
}
if(arr[i]==1){
f_1++;
}else if(arr[i]==2){
f_2++;
}else{
f_3++;
}
}
return c;
}
int main() {
// your code goes here
int n;
cin>>n;
vector<int> arr(n);
int f_t_1 = 0;
int f_t_2 = 0;
int f_t_3 = 0;
for(int i = 0;i<n;i++){
cin>>arr[i];
if(arr[i]==1){
f_t_1++;
}else if(arr[i]==2){
f_t_2++;
}else{
f_t_3++;
}
}
int g = solve(arr);
int ans = g;
int f1=0,f2=0,f3=0;
for(int i = 0;i<n;i++){
if(arr[i]==1){
int remove_f = g - f2 - f3;
int turn_2 = remove_f + f3 + f_t_1-f1 -1;
int turn_3 = remove_f + f_t_2 - f2 + f_t_1-f1 - 1;
ans = max(ans,max(turn_2,turn_3));
f1++;
}else if(arr[i]==2){
int remove_f = g - f3 - f_t_1 + f1;
int turn_1 = remove_f + f2 + f3;
int turn_3 = remove_f + f_t_1 - f1 + f_t_2 - f2;
ans = max(ans,max(turn_1,turn_3));
f2++;
}else{
int remove_f = g - f_t_1 + f1 - f_t_1 + f1;
int turn_1 = remove_f + f3 + f2;
int turn_2 = remove_f + f3 + f_t_1-f1;
ans = max(ans,max(turn_1,turn_2));
f3++;
}
}
cout<<ans;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgc29sdmUodmVjdG9yPGludD4mIGFycil7CiAgICBpbnQgZl8xID0gMDsKICAgIGludCBmXzIgPSAwOwogICAgaW50IGZfMyA9IDA7CiAgICBpbnQgbiA9IGFyci5zaXplKCk7CiAgICBpbnQgYyA9IDA7CiAgICBmb3IoaW50IGkgPSAwO2k8bjtpKyspewogICAgICAgIAogICAgICAgIGlmKGFycltpXT09MSl7CiAgICAgICAgICAgIGMrPWZfMiArIGZfMzsKICAgICAgICB9ZWxzZSBpZihhcnJbaV09PTIpewogICAgICAgICAgICBjKz1mXzM7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmKGFycltpXT09MSl7CiAgICAgICAgICAgIGZfMSsrOwogICAgICAgIH1lbHNlIGlmKGFycltpXT09Mil7CiAgICAgICAgICAgIGZfMisrOwogICAgICAgIH1lbHNlewogICAgICAgICAgICBmXzMrKzsKICAgICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiBjOwp9CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKICAgIGludCBuOwogICAgY2luPj5uOwogICAgCiAgICB2ZWN0b3I8aW50PiBhcnIobik7CiAgICBpbnQgZl90XzEgPSAwOwogICAgaW50IGZfdF8yID0gMDsKICAgIGludCBmX3RfMyA9IDA7CiAgICBmb3IoaW50IGkgPSAwO2k8bjtpKyspewogICAgICAgIGNpbj4+YXJyW2ldOwogICAgICAgIAogICAgICAgIGlmKGFycltpXT09MSl7CiAgICAgICAgICAgIGZfdF8xKys7CiAgICAgICAgfWVsc2UgaWYoYXJyW2ldPT0yKXsKICAgICAgICAgICAgZl90XzIrKzsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgZl90XzMrKzsKICAgICAgICB9CiAgICB9CiAgICAKICAgIAogICAgaW50IGcgPSBzb2x2ZShhcnIpOwogICAgaW50IGFucyA9IGc7CiAgICBpbnQgZjE9MCxmMj0wLGYzPTA7CiAgICBmb3IoaW50IGkgPSAwO2k8bjtpKyspewogICAgICAgIGlmKGFycltpXT09MSl7CiAgICAgICAgICAgIGludCByZW1vdmVfZiA9IGcgLSBmMiAtIGYzOwogICAgICAgICAgICBpbnQgdHVybl8yID0gcmVtb3ZlX2YgKyAgZjMgKyBmX3RfMS1mMSAtMTsKICAgICAgICAgICAgaW50IHR1cm5fMyA9IHJlbW92ZV9mICsgZl90XzIgLSBmMiArIGZfdF8xLWYxIC0gMTsKICAgICAgICAKICAgICAgICAgICAgYW5zID0gbWF4KGFucyxtYXgodHVybl8yLHR1cm5fMykpOwogICAgICAgICAgICBmMSsrOwogICAgICAgIH1lbHNlIGlmKGFycltpXT09Mil7CiAgICAgICAgICAgIGludCByZW1vdmVfZiA9IGcgLSBmMyAtIGZfdF8xICsgZjE7CiAgICAgICAgICAgIGludCB0dXJuXzEgPSByZW1vdmVfZiArIGYyICsgZjM7CiAgICAgICAgICAgIGludCB0dXJuXzMgPSByZW1vdmVfZiArIGZfdF8xIC0gZjEgKyBmX3RfMiAtIGYyOwogICAgICAgICAgICBhbnMgPSBtYXgoYW5zLG1heCh0dXJuXzEsdHVybl8zKSk7CiAgICAgICAgICAgIGYyKys7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGludCByZW1vdmVfZiA9IGcgLSBmX3RfMSArIGYxIC0gZl90XzEgKyBmMTsKICAgICAgICAgICAgaW50IHR1cm5fMSA9IHJlbW92ZV9mICsgZjMgKyBmMjsKICAgICAgICAgICAgaW50IHR1cm5fMiA9IHJlbW92ZV9mICsgZjMgKyBmX3RfMS1mMTsKICAgICAgICAgICAgYW5zID0gbWF4KGFucyxtYXgodHVybl8xLHR1cm5fMikpOwogICAgICAgICAgICBmMysrOwogICAgICAgIH0KICAgIH0KICAgIAogICAgY291dDw8YW5zOwp9