你正在为一个简单的文本文件浏览器设计用户界面。你的任务之一是构建一个显示目录层次结构的导航面板。通常,文件系统由目录组成,目录中可能包含文件和其他目录,而这些目录又可能包含更多的文件和目录,依此类推。因此,目录形成了一个层次化的树状结构。层次结构中最顶层的目录称为根目录。如果目录 $d$ 直接包含目录 $e$,我们称 $d$ 是 $e$ 的父目录,而 $e$ 是 $d$ 的子目录。每个文件都有一个以字节为单位的大小。目录的大小即为该目录下直接或间接包含的所有文件的总大小。
除了根目录外,所有文件和目录都有一个名称——一个总是以字母开头,且仅由小写字母和“.”(点)字符组成的字符串。所有直接位于同一个父目录下的项(文件和目录)必须具有唯一的名称。每个项(文件和目录)都可以通过其路径进行唯一描述——路径是根据以下规则构建的字符串:
- 根目录的路径仅为“/”(正斜杠)。
- 对于目录 $d$,其路径是通过从根目录到 $d$ 沿层次结构自上而下连接目录名称,在每个名称前加上“/”字符,并在路径末尾再放置一个“/”字符而获得的。
- 对于文件 $f$,其路径是父目录路径与文件 $f$ 名称的连接。
我们通过打印根目录来显示目录层次结构。我们通过输出一行格式为“$m_d\ p_d\ s_d$”的内容来打印目录 $d$,其中 $p_d$ 和 $s_d$ 分别是目录 $d$ 的路径和大小,$m_d$ 是稍后解释的展开标记。如果 $d$ 包含其他目录,我们必须选择将其折叠或展开。如果我们选择展开 $d$,我们将按名称的字典序打印其所有子目录(使用相同的规则)。如果我们选择折叠目录 $d$,我们只需忽略其内容。
展开标记 $m_d$ 是一个单个空格字符(当 $d$ 没有子目录时)、“+”(加号)字符(当我们选择折叠 $d$ 时)或“-”(减号)字符(当我们选择展开 $d$ 时)。
给定文件系统中的文件列表和一个阈值整数 $t$,请显示目录层次结构,确保打印出每个大小至少为 $t$ 的目录。此外,打印的目录总数应尽可能少。假设文件系统中没有空目录——整个层次结构可以从提供的文件路径中推导出来。注意,根目录无论其大小如何都必须打印。还要注意,大小至少为 $t$ 的目录只需要被打印,但不一定需要被展开。
输入格式
第一行包含一个整数 $n$ ($1 \le n \le 1000$),表示文件的数量。接下来的 $n$ 行,每行包含一个字符串 $f$ 和一个整数 $s$ ($1 \le s \le 10^6$),分别表示单个文件的路径和大小。每个路径最多 100 个字符长,并且是根据上述规则的有效文件路径。所有路径各不相同。
最后一行包含一个整数 $t$ ($1 \le t \le 10^9$),表示目录大小的阈值。
输出格式
输出给定阈值下文件系统层次结构的最小显示方式,如上所述。
样例
样例输入 1
9 /sys/kernel/notes 100 /cerc/problems/a/testdata/in 1000000 /cerc/problems/a/testdata/out 8 /cerc/problems/a/luka.cc 500 /cerc/problems/a/zuza.cc 5000 /cerc/problems/b/testdata/in 15 /cerc/problems/b/testdata/out 4 /cerc/problems/b/kale.cc 100 /cerc/documents/rules.pdf 4000 10000
样例输出 1
- / 1009727 - /cerc/ 1009627 /cerc/documents/ 4000 - /cerc/problems/ 1005627 - /cerc/problems/a/ 1005508 /cerc/problems/a/testdata/ 1000008 + /cerc/problems/b/ 119 + /sys/ 100
样例输入 2
8 /b/test/in.a 100 /b/test/in.b 1 /c/test/in.a 100 /c/test/in.b 1 /c/test/pic/in.a.svg 10 /c/test/pic/in.b.svg 10 /a/test/in.a 99 /a/test/in.b 1 101
样例输出 2
- / 322 + /a/ 100 - /b/ 101 /b/test/ 101 - /c/ 121 + /c/test/ 121
样例输入 3
2 /a/a/a 100 /b.txt 99 200
样例输出 3
+ / 199