Simone 的母亲经常抱怨 Simone 从来不帮家里做家务。作为回应,Simone 常指出她母亲分配给她的许多家务在最优解下是 NP-完全问题(例如打扫房间、以无冲突的方式安排弟弟们围坐在餐桌旁、公平地分配弟弟们的万圣节战利品等等)。
身为一名计算机科学家,她的母亲觉得这是一个合理的反驳。在查看了潜在的家务清单后,她挑选了一项她认为应该很容易解决的任务——将不同种类的袜子配对。
起初,有 $2n$ 只袜子堆成一堆。为了配对袜子,Simone 可以重复进行以下三种操作之一:
- 将原始堆顶部的袜子移动到辅助堆(初始为空)的顶部。
- 将辅助堆顶部的袜子移动到原始堆的顶部。
- 如果两个堆顶部的袜子类型相同,则将它们配对并移除。
Simone 只有一个辅助堆,总共只有两个堆。每种类型的袜子可能不止两只。在这种情况下,Simone 可以随意将它们配对。
你的任务是帮助 Simone 确定她配对所有袜子所需的最少操作次数,如果无法完成,则输出相应结果。
图片由 Villy Fink Isaksen 提供,采用 cc by-sa 协议
输入格式
输入的第一行包含整数 $n$ ($1 \le n \le 10^5$)。下一行包含 $2n$ 个整数 $a_1, \dots, a_{2n}$ ($1 \le a_i \le 10^9$),其中 $a_i$ 表示第 $i$ 只袜子的类型。最初,第 1 只袜子位于堆的顶部,第 $2n$ 只袜子位于底部。
输出格式
如果 Simone 可以配对所有的袜子,输出她完成此任务所需的最少操作次数。如果无法做到,输出 “impossible”(不含引号)。
样例
输入 1
2 1 2 2 1
输出 1
4
输入 2
1 3 7
输出 2
impossible
输入 3
3 5 5 5 5 5 5
输出 3
6