% Автор: Сергей Копелиович
% Источник: Чемпионат СПБГУ, октябрь 2013

\gdef\thisproblemauthor{Сергей Копелиович}
\gdef\thisproblemdeveloper{Сергей Копелиович}

\begin{problem}{Достижимость}
{reachability.in}{reachability.out}
{3 секунды (\textsl{8 секунд для Java})}{256 мебибайт}{}

Дан ориентированный граф из $n$ вершин.
Рёбер изначально нет.

Ребро из $a$ в $b$ будем обозначать $(a, b)$.

Нужно уметь обрабатывать запросы четырёх типов:

\begin{MyList}
  \item <<\t{+ o $v$ $k$ $a_1$ $\dots$ $a_k$}>> "--- добавить рёбра
        $(v, a_1), \dots, (v, a_k)$
  \item <<\t{+ i $v$ $k$ $a_1$ $\dots$ $a_k$}>> "--- добавить рёбра
        $(a_1, v), \dots, (a_k, v)$
  \item <<\t{- o $v$ $k$ $a_1$ $\dots$ $a_k$}>> "--- удалить рёбра
        $(v, a_1), \dots, (v, a_k)$
  \item <<\t{- i $v$ $k$ $a_1$ $\dots$ $a_k$}>> "--- удалить рёбра
        $(a_1, v), \dots, (a_k, v)$
\end{MyList}

В каждом запросе все $a_i$ различны.

Если ребро добавляется, гарантируется, что перед этим его не было.

Если ребро удаляется, гарантируется, что перед этим оно было.

Гарантируется, что в каждый момент времени граф ацикличен.

Ваша задача "--- поддерживать матрицу достижимости:

$$a_{ij} = \begin{cases} 1 \text{, если } i \not= j \text{ и из } i
 \text{ достижима } j \text{ по рёбрам графа}
 \\ 0 \text{, в противном случае} \end{cases}$$

\InputFile

В первой строке заданы целые числа $n$ "--- количество вершин,
$q$ "--- количество запросов, а также два числа $A$ и $B$,
которые пригодятся для вывода данных
($1 \le n \le 400$, $1 \le q \le 800$, $1 \le A, B \le 10^9$).
Далее следуют $q$ строк, каждая из которых содержит описание запроса
в формате, указанном выше.

\OutputFile

После каждого запроса выведите значение выражения
$$\left(\sum\limits_{i, j = 1}^{n} a_{ij} A^i B^j\right) \bmod 2^{32}$$
на отдельной строке.

\Example

\begin{example}
\exmp{
2 4 3 7
+ o 1 1 2
- i 2 1 1
+ i 1 1 2
- o 2 1 1
}{
7
0
3
0
}%
\end{example}

\end{problem}
