Due to a bug, there are many duplicate folders in a file system. You are given a 2D array `paths`, where `paths[i]` is an array representing an absolute path to the `ith` folder in the file system.

*   For example, `[ "one ", "two ", "three "]` represents the path `"/one/two/three "`.

Two folders (not necessarily on the same level) are **identical** if they contain the **same non-empty** set of identical subfolders and underlying subfolder structure. The folders **do not** need to be at the root level to be identical. If two or more folders are **identical**, then **mark** the folders as well as all their subfolders.

*   For example, folders `"/a "` and `"/b "` in the file structure below are identical. They (as well as their subfolders) should **all** be marked:
    *   `/a`
    *   `/a/x`
    *   `/a/x/y`
    *   `/a/z`
    *   `/b`
    *   `/b/x`
    *   `/b/x/y`
    *   `/b/z`
*   However, if the file structure also included the path `"/b/w "`, then the folders `"/a "` and `"/b "` would not be identical. Note that `"/a/x "` and `"/b/x "` would still be considered identical even with the added folder.

Once all the identical folders and their subfolders have been marked, the file system will **delete** all of them. The file system only runs the deletion once, so any folders that become identical after the initial deletion are not deleted.

Return _the 2D array_ `ans` _containing the paths of the **remaining** folders after deleting all the marked folders. The paths may be returned in **any** order_.

**Example 1:**

**Input:** paths = \[\[ "a "\],\[ "c "\],\[ "d "\],\[ "a ", "b "\],\[ "c ", "b "\],\[ "d ", "a "\]\]
**Output:** \[\[ "d "\],\[ "d ", "a "\]\]
**Explanation:** The file structure is as shown.
Folders  "/a " and  "/c " (and their subfolders) are marked for deletion because they both contain an empty
folder named  "b ".

**Example 2:**

**Input:** paths = \[\[ "a "\],\[ "c "\],\[ "a ", "b "\],\[ "c ", "b "\],\[ "a ", "b ", "x "\],\[ "a ", "b ", "x ", "y "\],\[ "w "\],\[ "w ", "y "\]\]
**Output:** \[\[ "c "\],\[ "c ", "b "\],\[ "a "\],\[ "a ", "b "\]\]
**Explanation:** The file structure is as shown. 
Folders  "/a/b/x " and  "/w " (and their subfolders) are marked for deletion because they both contain an empty folder named  "y ".
Note that folders  "/a " and  "/c " are identical after the deletion, but they are not deleted because they were not marked beforehand.

**Example 3:**

**Input:** paths = \[\[ "a ", "b "\],\[ "c ", "d "\],\[ "c "\],\[ "a "\]\]
**Output:** \[\[ "c "\],\[ "c ", "d "\],\[ "a "\],\[ "a ", "b "\]\]
**Explanation:** All folders are unique in the file system.
Note that the returned array can be in a different order as the order does not matter.

**Constraints:**

*   `1 <= paths.length <= 2 * 104`
*   `1 <= paths[i].length <= 500`
*   `1 <= paths[i][j].length <= 10`
*   `1 <= sum(paths[i][j].length) <= 2 * 105`
*   `path[i][j]` consists of lowercase English letters.
*   No two paths lead to the same folder.
*   For any folder not at the root level, its parent folder will also be in the input.

버그로 인해 파일 시스템에 중복 폴더가 많이 있습니다. 2D 배열 '경로'가 주어지는데, 여기서 '경로[i]`는 파일 시스템의 'i번째' 폴더에 대한 절대 경로를 나타내는 배열입니다.

* 예를 들어, `["one", "two", "three"]`는 `"/one/two/three"` 경로를 나타냅니다.

두 폴더(반드시 같은 레벨에 있을 필요는 없음)가 동일한 하위 폴더와 기본 하위 폴더 구조의 **비어 있지 않은 동일한** 집합을 포함하는 경우 두 폴더는 **동일합니다**. 폴더가 동일하기 위해 루트 레벨에 있을 필요는 없습니다. 두 개 이상의 폴더가 **동일한** 경우, 폴더와 모든 하위 폴더를 **표시**하세요.

* 예를 들어 아래 파일 구조에서 `"/a"` 폴더와 `"/b"` 폴더는 동일합니다. 이 폴더와 그 하위 폴더는 모두 **모두** 표시해야 합니다:
    * `/a`
    * `/a/x`
    * `/a/x/y`
    * `/a/z`
    * `/b`
    * `/b/x`
    * `/b/x/y`
    * `/b/z`
* 그러나 파일 구조에 `"/b/w"` 경로도 포함된 경우 `"/a"`와 `"/b"` 폴더는 동일하지 않습니다. 폴더가 추가되더라도 `"/a/x"`와 `"/b/x"`는 여전히 동일한 것으로 간주됩니다.

동일한 폴더와 그 하위 폴더가 모두 표시되면 파일 시스템은 모든 폴더를 **삭제**합니다. 파일 시스템은 삭제를 한 번만 실행하므로 초기 삭제 후 동일하게 된 폴더는 삭제되지 않습니다.

표시된 폴더를 모두 삭제한 후 **남아있는** 폴더의 경로가 포함된 2D 배열 `ans`를 반환합니다. 경로는 **어떤** 순서로든 반환될 수 있습니다.

**예제 1:**

**입력:** 경로 = \[\["a"\],\["c"\],\["d"\],\["a ","b"\],\["c ","b"\],\["d ","a"\]\]
**출력:** \[\["d"\],\["d ","a"\]\]
**설명:** 파일 구조는 그림과 같습니다.
폴더 "/a" 및 "/c"(및 하위 폴더)는 모두 "b"라는 빈 폴더를 포함하므로 삭제 대상으로 표시됩니다.
폴더를 포함하고 있기 때문에 삭제 대상으로 표시됩니다.

**예제 2:**

**Input:** paths = \[\["a"\],\["c"\],\["a ","b"\],\["c ","b"\],\["a ","b ","x"\],\["a ","b ","x","y"\],\["w"\],\["w","y"\]\]
**출력:** \[\[\["c "\],\["c ","b "\],\["a "\],\["a ","b "\]\]
**설명:** 파일 구조는 다음과 같습니다.
"/a/b/x" 및 "/w" 폴더(및 해당 하위 폴더)는 모두 "y"라는 빈 폴더를 포함하고 있으므로 삭제하도록 표시되어 있습니다.
"/a" 및 "/c" 폴더는 삭제 후에도 동일하지만 미리 삭제 표시가 되어 있지 않았기 때문에 삭제되지 않습니다.

**예 3:**

**입력:** 경로 = \[\[\["a ","b"\],\["c ","d"\],\["c"\],\["a"\]\]
**Output:** \[\["c "\],\["c ","d "\],\["a "\],\["a ","b "\]\]
**설명:** 모든 폴더는 파일 시스템에서 고유합니다.
순서는 중요하지 않으므로 반환되는 배열은 다른 순서일 수 있습니다.

**제약 조건:**

* `1 <= paths.length <= 2 * 104`
* `1 <= paths[i].length <= 500`
* `1 <= paths[i][j].length <= 10`
* `1 <= sum(paths[i][j].length) <= 2 * 105`
* `path[i][j]`는 영문 소문자로 구성됩니다.
* 두 경로가 동일한 폴더로 연결되지 않습니다.
* 루트 레벨이 아닌 폴더의 경우 상위 폴더도 입력에 포함됩니다.
