你在生物信息学研究小组实习,研究 DNA。单链 DNA 由许多基因组成,这些基因属于不同的类别,称为基因类型。基因类型由特定的核苷酸序列(称为基因标记)界定。每种基因类型 $i$ 都有一个唯一的起始标记 $s_i$ 和一个唯一的结束标记 $e_i$。经过许多繁琐的工作(培养细菌、细胞提取、蛋白质工程等),你们的研究小组可以将 DNA 转化为仅由基因标记组成的序列,去除了标记之间所有的遗传物质。
你们的研究小组提出了一个有趣的假设:基因的解读取决于某些基因类型的标记是否形成了适当的嵌套结构。为了判断基因类型 $i$ 的标记在给定的标记序列 $w$ 中是否形成适当的嵌套,需要考虑 $w$ 中仅包含该基因类型 $i$ 的标记($s_i$ 和 $e_i$)的子序列,且不能遗漏任何标记。以下(且仅以下)结构被视为适当的嵌套结构:
- $s_i e_i$
- $s_i N e_i$,其中 $N$ 是一个适当的嵌套结构
- $AB$,其中 $A$ 和 $B$ 是适当的嵌套结构
鉴于你的计算机背景,你被指派调查这一特性,但还有一个进一步的复杂情况。你们小组正在研究一种称为环状 DNA 的特殊 DNA,即形成闭环的 DNA。为了研究环状 DNA 中的嵌套,必须在某个位置切开环,这会产生一个唯一的标记序列(读取方向由分子特性固定)。基因类型 $i$ 是否形成适当的嵌套现在也取决于环状 DNA 在何处被切开。你的任务是找到一个切割位置,使得形成适当嵌套结构的基因类型数量最大化。图 D.1 展示了对应于样例输入 1 的示例。所示的切割使得基因类型 1 的标记形成了适当的嵌套。
图 D.1:样例输入 1 及其最佳切割位置的示意图。
输入格式
输入的第一行包含一个整数 $n$ ($1 \le n \le 10^6$),表示 DNA 的长度。下一行包含 DNA 序列,即 $n$ 个标记。每个标记由一个字符 $c$ 后跟一个整数 $i$ 组成,其中 $c \in \{s, e\}$ 指定它是起始标记还是结束标记,$i$ ($1 \le i \le 10^6$) 是该标记的基因类型。给定的 DNA 序列是通过在任意位置切割环状 DNA 获得的。
输出格式
输出一行,包含两个整数 $p$ 和 $m$,其中 $p$ 是使形成适当嵌套的不同基因类型数量最大化的切割位置,$m$ 是该最大基因类型数量。DNA 在第 $p$ 个输入标记之前被切开(例如,图 D.1 中所示的切割对应 $p = 3$)。如果有多个切割位置产生相同的最大值 $m$,则输出最小的 $p$。
样例
样例输入 1
9 e1 e1 s1 e2 s1 s2 e42 e1 s1
样例输出 1
3 1
样例输入 2
8 s1 s1 e3 e1 s3 e1 e3 s3
样例输出 2
8 2