#P15751. 一二三配队

一二三配队

题目描述

舞台监督 Aina 正在为一支队伍安排三人小组。队伍按顺序站成一列,共有 NN 个人,编号为 0,1,,N10,1,\ldots,N-1。第 ii 个人的类型为 AiA_i,且只可能是 1,2,31,2,3 中的一种。

一个下标三元组 (i,j,k)(i,j,k) 被称为好三元组,当且仅当

0i<j<k<N0\le i<j<k<N

并且满足下面两种情况之一:

  • Ai=1,Aj=2,Ak=3A_i=1,A_j=2,A_k=3
  • Ai=3,Aj=2,Ak=1A_i=3,A_j=2,A_k=1

你需要选出尽可能多的两两不相交的好三元组。所谓不相交,是指任何一个下标都不能出现在超过一个三元组中。

请输出最多能选出的好三元组数量,并给出任意一种达到最大数量的方案。

输入格式

第一行包含一个整数 NN,表示序列长度。

第二行包含 NN 个整数 A0,A1,,AN1A_0,A_1,\ldots,A_{N-1}

输出格式

第一行输出一个整数 MM,表示最多能选出的两两不相交好三元组数量。

接下来 MM 行,每行输出三个整数 i,j,ki,j,k,表示一个好三元组。

输出的所有三元组必须两两不相交。若存在多种最优方案,输出任意一种即可。

数据范围

  • 1N6000001\le N\le 600000
  • 1Ai31\le A_i\le 3
  • 输出的三元组需满足 0i<j<k<N0\le i<j<k<N

样例 1

输入

6
3 1 2 2 3 1

输出

2
1 2 4
0 3 5

样例 2

输入

6
2 1 3 1 3 2

输出

0