Virtual contest is a way to take part in past contest, as close as possible to participation on time. It is supported only ACM-ICPC mode for virtual contests.
If you've seen these problems, a virtual contest is not for you - solve these problems in the archive.
If you just want to solve some problem from a contest, a virtual contest is not for you - solve this problem in the archive.
Never use someone else's code, read the tutorials or communicate with other person during a virtual contest.

No tag edit access

C. On Changing Tree

time limit per test

2 secondsmemory limit per test

256 megabytesinput

standard inputoutput

standard outputYou are given a rooted tree consisting of *n* vertices numbered from 1 to *n*. The root of the tree is a vertex number 1.

Initially all vertices contain number 0. Then come *q* queries, each query has one of the two types:

- The format of the query: 1
*v**x**k*. In response to the query, you need to add to the number at vertex*v*number*x*; to the numbers at the descendants of vertex*v*at distance 1, add*x*-*k*; and so on, to the numbers written in the descendants of vertex*v*at distance*i*, you need to add*x*- (*i*·*k*). The distance between two vertices is the number of edges in the shortest path between these vertices. - The format of the query: 2
*v*. In reply to the query you should print the number written in vertex*v*modulo 1000000007 (10^{9}+ 7).

Process the queries given in the input.

Input

The first line contains integer *n* (1 ≤ *n* ≤ 3·10^{5}) — the number of vertices in the tree. The second line contains *n* - 1 integers *p*_{2}, *p*_{3}, ... *p*_{n} (1 ≤ *p*_{i} < *i*), where *p*_{i} is the number of the vertex that is the parent of vertex *i* in the tree.

The third line contains integer *q* (1 ≤ *q* ≤ 3·10^{5}) — the number of queries. Next *q* lines contain the queries, one per line. The first number in the line is *type*. It represents the type of the query. If *type* = 1, then next follow space-separated integers *v*, *x*, *k* (1 ≤ *v* ≤ *n*; 0 ≤ *x* < 10^{9} + 7; 0 ≤ *k* < 10^{9} + 7). If *type* = 2, then next follows integer *v* (1 ≤ *v* ≤ *n*) — the vertex where you need to find the value of the number.

Output

For each query of the second type print on a single line the number written in the vertex from the query. Print the number modulo 1000000007 (10^{9} + 7).

Examples

Input

3

1 1

3

1 1 2 1

2 1

2 2

Output

2

1

Note

You can read about a rooted tree here: http://en.wikipedia.org/wiki/Tree_(graph_theory).

Codeforces (c) Copyright 2010-2019 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: Mar/26/2019 16:24:28 (f2).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|