#include #include int main() { int n; std::cin >> n; std::vector tasks(n); for(int i=0; i> tasks[i]; std::vector dp(24); for(int i=0; i newdp (24); for(int tool=0; tool<3; tool++) { for(int usemask = 0; usemask < 8; usemask++) { int old = dp[(tool << 3) + usemask]; if(tasks[i] == tool) newdp[(tool << 3) + usemask] = std::max(newdp[(tool << 3) + usemask], old+1); else newdp[(tool << 3) + usemask] = std::max(newdp[(tool << 3) + usemask], old); if(tool != tasks[i] && !(usemask & (1<