User: Не так давно Лёня и Лёша заняли первое место на Reversed VK Cup, и администрация предлагает им выбрать себе подарки. Подарки лежат в коробочках, и каждая коробочка подвешена за некоторую другую; приз с номером 1 подвешен к потолку актового зала, в котором происходит награждение. Для каждого подарка известна его ценность для ребят — некоторое число. Иными словами, подарки и верёвочки образуют дерево со взвешенными вершинами с корнем в вершине под номером 1.

Каждый из ребят выбирает себе подарок отдельно. После того, как участник выбрал подарок, он вырезает его из структуры, и всё поддерево подарка падает на пол; соответственно, из этого поддерева больше нельзя выбрать подарок. Лёня и Лёша хотят выбрать себе по одному подарку так, чтобы их суммарная ценность была максимальной, а взять эти подарки вместе было возможно. Другими словами, им требуется выбрать две различные вершины дерева с максимальной суммой весов так, чтобы ни одна из этой пары не являлась предком другой.

Помогите ребятам, и, может быть, вы тоже когда-нибудь сможете занять первое место на Reversed VK Cup.

В первой строке входного файла дано число n — количество подарков (1 ≤ n ≤ 105).

Во второй строке входного файла даны n целых чисел, i-e число определяет ценность подарка с номером i (ценность подарка неотрицательна и не превосходит 109).

В следующих n - 1 строках даны пары чисел v, w — номера подарков, связанных верёвочкой. Подарки нумеруются с 1.


Формат файла выходных данных:

В единственной строке выходного файла выведите число k — максимально возможную суммарную ценность подарков ребят. Если выбрать подарки требуемым образом невозможно, выведите -1.


Пример:
3
2 1 5
2 1
3 1

6
Assistant: Для решения данной задачи мы можем использовать подход, основанный на обходе дерева. Основная идея заключается в том, чтобы найти две вершины, которые не имеют родительско-потомковых отношений, и максимизировать их суммарную ценность.

Рассмотрим шаги решения:

1. **Чтение входных данных**: Нам необходимо получить количество подарков, их ценности и связи между ними в виде графа (в данном случае - дерева).

2. **Построение дерева**: Мы будем использовать список смежности, чтобы представить дерево, где каждая вершина (подарок) связана с другими.

3. **Поиск двух наибольших ценностей в разных поддеревьях**: Для каждого узла в дереве мы будем искать максимальные ценности подарков среди его детей. Сохраним информацию о наибольшем и втором по величине значении для каждого узла.

4. **Подсчет суммарной ценности**: Для каждого узла дерева, если он имеет как минимум два различных потомка с наибольшими весами, мы можем комбинировать их ценности, чтобы получить кандидата для ответа.

5. **Вывод результата**: После перебора всех узлов мы сможем решением, состоящим в выводе максимального значения, либо -1, если такие пары не были найдены.

Ниже приведен реализованный код для данного алгоритма на Python:

```python
def find_max_pair_value(n, values, edges):
    from collections import defaultdict
    
    # Построим граф дерева
    tree = defaultdict(list)
    for v, w in edges:
        tree[v].append(w)
        tree[w].append(v)

    # Храним максимальные и второстепенные значения
    max_values = [0] * (n + 1)
    second_max_values = [0] * (n + 1)
    visited = [False] * (n + 1)
    
    def dfs(node):
        visited[node] = True
        first_max = 0
        second_max = 0
        
        for neighbor in tree[node]:
            if not visited[neighbor]:
                dfs(neighbor)
                
                # Выбираем максимальные и вторые максимальные значений
                if max_values[neighbor] > first_max:
                    second_max = first_max
                    first_max = max_values[neighbor]
                elif max_values[neighbor] > second_max:
                    second_max = max_values[neighbor]

        max_values[node] = first_max
        second_max_values[node] = second_max

    # Начинаем обход с корневого узла (узел 1)
    dfs(1)

    # Находим максимальную сумму двух разных подарков
    maximum_sum = -1
    for i in range(1, n + 1):
        if max_values[i] > 0 and second_max_values[i] > 0:
            maximum_sum = max(maximum_sum, max_values[i] + second_max_values[i])

    return maximum_sum

# Чтение входных данных
n = int(input())
values = list(map(int, input().split()))
edges = [tuple(map(int, input().split())) for _ in range(n - 1)]

# Прямую ценность накапливаем в values
for i in range(1, n + 1):
    values[i - 1] = (values[i - 1], i)

# Решение
result = find_max_pair_value(n, values, edges)
print(result)
```

### Примечания
- Код обрабатывает дерево с помощью DFS (поиск в глубину).
- Мы сохраняем максимум и второе по величине значение в каждом узле, чтобы в дальнейшем легко комбинировать их для получения максимальной суммы.
- Обработка начинается с корневого узла, что в данном случае соответствует узлу с номером 1.
User: напиши на голанг
Assistant: Конечно! Вот реализация алгоритма на языке Go для решения задачи по выбору подарков из дерева. Мы будем использовать DFS для обхода дерева и поиска двух максимальных значений подарков в поддеревьях.

```go
package main

import (
        "fmt"
)

type TreeNode struct {
        value   int
        children []*TreeNode
}

func dfs(node *TreeNode, maxValues *[]int, secondMaxValues *[]int) {
        firstMax, secondMax := 0, 0

        for _, child := range node.children {
                dfs(child, maxValues, secondMaxValues)

                if (*maxValues)[child.value] > firstMax {
                        secondMax = firstMax
                        firstMax = (*maxValues)[child.value]
                } else if (*maxValues)[child.value] > secondMax {
                        secondMax = (*maxValues)[child.value]
                }
        }

        (*maxValues)[node.value] = firstMax
        (*secondMaxValues)[node.value] = secondMax
}

func main() {
        var n int
        fmt.Scan(&n)

        values := make([]int, n+1)
        for i := 1; i <= n; i++ {
                fmt.Scan(&values[i])
        }

        tree := make([]*TreeNode, n+1)
        for i := range tree {
                tree[i] = &TreeNode{value: i, children: []*TreeNode{}}
        }

        for i := 0; i < n-1; i++ {
                var v, w int
                fmt.Scan(&v, &w)
                tree[v].children = append(tree[v].children, tree[w])
                tree[w].children = append(tree[w].children, tree[v]) // так как дерево неориентированное
        }

        // Для использования DFS храним максимальные значения
        maxValues := make([]int, n+1)
        secondMaxValues := make([]int, n+1)

        // Начинаем обход с корневого узла (узел 1)
        dfs(tree[1], &maxValues, &secondMaxValues)

        // Находим максимальную сумму двух разных подарков
        maximumSum := -1
        for i := 1; i <= n; i++ {
                if maxValues[i] > 0 && secondMaxValues[i] > 0 {
                        maximumSum = max(maximumSum, maxValues[i]+secondMaxValues[i])
                }
        }

        fmt.Println(maximumSum)
}

func max(a, b int) int {
        if a > b {
                return a
        }
        return b
}
```

### Объяснение кода:
1. **Структура TreeNode**: Представляет узлы дерева, каждый узел хранит свое значение и список детей.
2. **DFS функция**: Находит максимальные и второстепенные максимальные значения в поддеревьях.
3. **Основная функция**:
   - Читает количество узлов и их значения.
   - Строит неориентированное дерево.
   - Запускает DFS с корневым узлом.
   - Находит максимальную сумму двух подарков, которые могут быть выбраны.
4. **Функция `max`**: Определяет максимальное значение между двумя целыми числами.

### Запуск программы:
1. Скомпилируйте код с помощью `go build` и запустите его.
2. Введите количество подарков и их ценности, а затем связи между ними в виде пар чисел.

Программа выведет максимальную возможную суммарную ценность подарков, которые могут выбрать Лёня и Лёша. Если такого выбрать нельзя, будет выведено -1.
User: а куда вводить данные нужно будет?
Assistant: аша программа на Go будет ожидать ввод данных из стандартного ввода, аналогично тому, как это делается в других языках программирования. Для этого вы можете использовать терминал или консольную среду. Вот как можно ввести данные:

### Запуск программы и ввод данных

1. **Скомпилируйте программу**:
   В терминале, перейдите в директорию, где находится ваш `.go` файл (например, `main.go`), затем выполните команду:
   ```bash
   go build main.go
   ```
   Это создаст исполняемый файл с именем `main`.

2. **Запустите программу**:
   В том же терминале выполните команду:
   ```bash
   ./main
   ```

3. **Введите данные**:
   Программа будет ожидать ввода. Вам нужно будет ввести данные в следующем формате:
   - Первое число (`n`): количество подарков (в вашем случае, 1 ≤ n ≤ 100000).
   - Вторую строку: `n` целых чисел, представляющих ценности каждого подарка.
   - Далее вам нужно ввести `n-1` строк, каждая из которых содержит пару чисел `v` и `w`, представляющих связи между подарками.

   **Пример ввода**:
   ```
   3
   2 1 5
   2 1
   3 1
   ```

4. **Нажмите Enter**:
   После ввода данных нажмите `Enter`. Программа выполнится и выведет результат, представляющий максимальную суммарную ценность подарков или -1, если выбрать ничего нельзя.

### Ввод вручную в IDE
Если вы используете IDE или текстовые редакторы с поддержкой Go, такие как GoLand, Visual Studio Code и т.д., вы можете ввести данные в консоль, которая предоставляется IDE. Обычно, когда вы запускаете программу, IDE автоматически открывает консоль для ввода.

### Примечание
При большом количестве данных (особенно в пределах 100000) ввод вручную может оказаться неудобным. В таком случае вы можете создать текстовый файл (например, `input.txt`) с вашими данными и перенаправить ввод в программу:
```bash
./main < input.txt
```

Таким образом, программа будет читать данные из файла. Подводя итоги, запуск и ввод данных может выполняться различными способами в зависимости от вашего выбора инструмента.
User: что-то пошло не так
./forfun       
3
2 1 5
2 1
3 1
runtime: goroutine stack exceeds 1000000000-byte limit
runtime: sp=0xc0200e0358 stack=[0xc0200e0000, 0xc0400e0000]
fatal error: stack overflow

runtime stack:
runtime.throw({0x4a90a0?, 0x530e00?})
        S:/dev/sdk/go/go1.20.1/src/runtime/panic.go:1047 +0x5d fp=0x7ffdc7797eb8 sp=0x7ffdc7797e88 pc=0x430b5d
runtime.newstack()
        S:/dev/sdk/go/go1.20.1/src/runtime/stack.go:1105 +0x5bd fp=0x7ffdc7798068 sp=0x7ffdc7797eb8 pc=0x44865d
runtime.morestack()
        S:/dev/sdk/go/go1.20.1/src/runtime/asm_amd64.s:574 +0x8b fp=0x7ffdc7798070 sp=0x7ffdc7798068 pc=0x45bd8b

goroutine 1 [running]:
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:12 +0x133 fp=0xc0200e0368 sp=0xc0200e0360 pc=0x48dc93
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e03c0 sp=0xc0200e0368 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0418 sp=0xc0200e03c0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0470 sp=0xc0200e0418 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e04c8 sp=0xc0200e0470 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0520 sp=0xc0200e04c8 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0578 sp=0xc0200e0520 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e05d0 sp=0xc0200e0578 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0628 sp=0xc0200e05d0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0680 sp=0xc0200e0628 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e06d8 sp=0xc0200e0680 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0730 sp=0xc0200e06d8 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0788 sp=0xc0200e0730 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e07e0 sp=0xc0200e0788 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0838 sp=0xc0200e07e0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0890 sp=0xc0200e0838 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e08e8 sp=0xc0200e0890 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0940 sp=0xc0200e08e8 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0998 sp=0xc0200e0940 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e09f0 sp=0xc0200e0998 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0a48 sp=0xc0200e09f0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0aa0 sp=0xc0200e0a48 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0af8 sp=0xc0200e0aa0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0b50 sp=0xc0200e0af8 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0ba8 sp=0xc0200e0b50 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0c00 sp=0xc0200e0ba8 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0c58 sp=0xc0200e0c00 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0cb0 sp=0xc0200e0c58 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0d08 sp=0xc0200e0cb0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0d60 sp=0xc0200e0d08 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0db8 sp=0xc0200e0d60 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0e10 sp=0xc0200e0db8 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0e68 sp=0xc0200e0e10 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0ec0 sp=0xc0200e0e68 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0f18 sp=0xc0200e0ec0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0f70 sp=0xc0200e0f18 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e0fc8 sp=0xc0200e0f70 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1020 sp=0xc0200e0fc8 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1078 sp=0xc0200e1020 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e10d0 sp=0xc0200e1078 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1128 sp=0xc0200e10d0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1180 sp=0xc0200e1128 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e11d8 sp=0xc0200e1180 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1230 sp=0xc0200e11d8 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1288 sp=0xc0200e1230 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e12e0 sp=0xc0200e1288 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1338 sp=0xc0200e12e0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1390 sp=0xc0200e1338 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e13e8 sp=0xc0200e1390 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1440 sp=0xc0200e13e8 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1498 sp=0xc0200e1440 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e14f0 sp=0xc0200e1498 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1548 sp=0xc0200e14f0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e15a0 sp=0xc0200e1548 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e15f8 sp=0xc0200e15a0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1650 sp=0xc0200e15f8 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e16a8 sp=0xc0200e1650 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1700 sp=0xc0200e16a8 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1758 sp=0xc0200e1700 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e17b0 sp=0xc0200e1758 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1808 sp=0xc0200e17b0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1860 sp=0xc0200e1808 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e18b8 sp=0xc0200e1860 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1910 sp=0xc0200e18b8 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1968 sp=0xc0200e1910 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e19c0 sp=0xc0200e1968 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1a18 sp=0xc0200e19c0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1a70 sp=0xc0200e1a18 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1ac8 sp=0xc0200e1a70 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1b20 sp=0xc0200e1ac8 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1b78 sp=0xc0200e1b20 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1bd0 sp=0xc0200e1b78 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1c28 sp=0xc0200e1bd0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1c80 sp=0xc0200e1c28 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1cd8 sp=0xc0200e1c80 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1d30 sp=0xc0200e1cd8 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1d88 sp=0xc0200e1d30 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1de0 sp=0xc0200e1d88 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1e38 sp=0xc0200e1de0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1e90 sp=0xc0200e1e38 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1ee8 sp=0xc0200e1e90 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1f40 sp=0xc0200e1ee8 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1f98 sp=0xc0200e1f40 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e1ff0 sp=0xc0200e1f98 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e2048 sp=0xc0200e1ff0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e20a0 sp=0xc0200e2048 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e20f8 sp=0xc0200e20a0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e2150 sp=0xc0200e20f8 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e21a8 sp=0xc0200e2150 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e2200 sp=0xc0200e21a8 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e2258 sp=0xc0200e2200 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e22b0 sp=0xc0200e2258 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e2308 sp=0xc0200e22b0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e2360 sp=0xc0200e2308 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e23b8 sp=0xc0200e2360 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e2410 sp=0xc0200e23b8 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e2468 sp=0xc0200e2410 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e24c0 sp=0xc0200e2468 pc=0x48dbe7
main.dfs(0xc0000ba060, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e2518 sp=0xc0200e24c0 pc=0x48dbe7
main.dfs(0xc0000ba040, 0xc0400dff38, 0xc0400dff20)
        S:/dev/projects/forfan/main.go:15 +0x87 fp=0xc0200e2570 sp=0xc0200e2518 pc=0x48dbe7
...additional frames elided...

goroutine 2 [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        S:/dev/sdk/go/go1.20.1/src/runtime/proc.go:381 +0xd6 fp=0xc000046fb0 sp=0xc000046f90 pc=0x433876
runtime.goparkunlock(...)
        S:/dev/sdk/go/go1.20.1/src/runtime/proc.go:387
runtime.forcegchelper()
        S:/dev/sdk/go/go1.20.1/src/runtime/proc.go:305 +0xb0 fp=0xc000046fe0 sp=0xc000046fb0 pc=0x4336b0
runtime.goexit()
        S:/dev/sdk/go/go1.20.1/src/runtime/asm_amd64.s:1598 +0x1 fp=0xc000046fe8 sp=0xc000046fe0 pc=0x45dd21
created by runtime.init.6
        S:/dev/sdk/go/go1.20.1/src/runtime/proc.go:293 +0x25

goroutine 3 [GC sweep wait]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        S:/dev/sdk/go/go1.20.1/src/runtime/proc.go:381 +0xd6 fp=0xc000047780 sp=0xc000047760 pc=0x433876
runtime.goparkunlock(...)
        S:/dev/sdk/go/go1.20.1/src/runtime/proc.go:387
runtime.bgsweep(0x0?)
        S:/dev/sdk/go/go1.20.1/src/runtime/mgcsweep.go:278 +0x8e fp=0xc0000477c8 sp=0xc000047780 pc=0x42060e
runtime.gcenable.func1()
        S:/dev/sdk/go/go1.20.1/src/runtime/mgc.go:178 +0x26 fp=0xc0000477e0 sp=0xc0000477c8 pc=0x415ae6
runtime.goexit()
        S:/dev/sdk/go/go1.20.1/src/runtime/asm_amd64.s:1598 +0x1 fp=0xc0000477e8 sp=0xc0000477e0 pc=0x45dd21
created by runtime.gcenable
        S:/dev/sdk/go/go1.20.1/src/runtime/mgc.go:178 +0x6b

goroutine 4 [GC scavenge wait]:
runtime.gopark(0xc000064000?, 0x4c61a0?, 0x1?, 0x0?, 0x0?)
        S:/dev/sdk/go/go1.20.1/src/runtime/proc.go:381 +0xd6 fp=0xc000047f70 sp=0xc000047f50 pc=0x433876
runtime.goparkunlock(...)
        S:/dev/sdk/go/go1.20.1/src/runtime/proc.go:387
runtime.(*scavengerState).park(0x543820)
        S:/dev/sdk/go/go1.20.1/src/runtime/mgcscavenge.go:400 +0x53 fp=0xc000047fa0 sp=0xc000047f70 pc=0x41e553
runtime.bgscavenge(0x0?)
        S:/dev/sdk/go/go1.20.1/src/runtime/mgcscavenge.go:628 +0x45 fp=0xc000047fc8 sp=0xc000047fa0 pc=0x41eb25
runtime.gcenable.func2()
        S:/dev/sdk/go/go1.20.1/src/runtime/mgc.go:179 +0x26 fp=0xc000047fe0 sp=0xc000047fc8 pc=0x415a86
runtime.goexit()
        S:/dev/sdk/go/go1.20.1/src/runtime/asm_amd64.s:1598 +0x1 fp=0xc000047fe8 sp=0xc000047fe0 pc=0x45dd21
created by runtime.gcenable
        S:/dev/sdk/go/go1.20.1/src/runtime/mgc.go:179 +0xaa

goroutine 17 [finalizer wait]:
runtime.gopark(0x433bf2?, 0x7fdee68e3868?, 0x0?, 0x0?, 0xc000046770?)
        S:/dev/sdk/go/go1.20.1/src/runtime/proc.go:381 +0xd6 fp=0xc000046628 sp=0xc000046608 pc=0x433876
runtime.runfinq()
        S:/dev/sdk/go/go1.20.1/src/runtime/mfinal.go:193 +0x107 fp=0xc0000467e0 sp=0xc000046628 pc=0x414b27
runtime.goexit()
        S:/dev/sdk/go/go1.20.1/src/runtime/asm_amd64.s:1598 +0x1 fp=0xc0000467e8 sp=0xc0000467e0 pc=0x45dd21
created by runtime.createfing
        S:/dev/sdk/go/go1.20.1/src/runtime/mfinal.go:163 +0x45
Assistant: