신경망에서 순전파와 역전파를 수행하라. 신경망이란 행렬상수, 행렬덧셈, 행렬곱셈, ReLU를 나타내는 4가지 타입의 정점과 계산값의 흐름을 나타내는 방향간선들로 구성되며, 사이클이 존재하지 않고, 출력정점(out degree가 0인 정점)이 단 하나 존재하며, 그 출력정점의 계산값은 스칼라값(1*1행렬)인 계산그래프를 의미한다. 정점 x의 계산값을 f(x)라고 하자. 각 정점의 타입별로 수행하는 계산은 다음과 같다. 타입1(행렬상수)정점 i의 계산값 f(i)는 고정된 R*C행렬이다. 타입2(행렬덧셈)정점 i의 계산값 f(i)는 두 개의 predecessor j, k의 계산값을 더한 결과 f(j)+f(k)이다. 타입3(행렬곱셈)정점 i의 계산값 f(i)는 두 개의 predecessor j, k의 계산값을 곱한 결과 f(j)*f(k)이다. 타입4(ReLU)정점 i의 계산값 f(i)는 한 개의 predecessor j의 계산값의 각 원소에 ReLU연산을 한 결과이다. 오차는 출력정점의 계산값과 참값과의 차이의 절댓값인데, 편의상 이 문제에서 목표값은 0으로 고정할 것이므로, 오차는 출력정점의 계산값의 절댓값이다. 순전파란, 신경망의 출력정점의 계산값을 구하는 것이다. 역전파란, 각 정점의 계산값에 대한 오차의 미분값을 구하는 것이다. 첫 줄에 정점의 개수 N이 주어진다. (1<=N<=100,000) 다음 줄부터 N개의 줄에 정점정보가 번호순서대로 한 줄씩 주어진다. i번 정점에 대한 정보는 아래와 같이 주어진다. 첫번째 숫자 t_i는 정점의 타입을 나타낸다. (1<=t_i<=4) t_i=1인 경우, 다음 두 개의 숫자는 행렬의 크기 R_i, C_i를 의미한다. 이후 행렬의 원소를 나타내는 R_i*C_i개의 숫자가 주어진다. t_i=2,3인 경우, 다음 두 개의 숫자는 두 predecessor의 번호 j_i, k_i를 의미한다. t_i=4인 경우, 다음 한 개의 숫자는 predecessor의 번호 j_i를 의미한다. 입력으로 주어지는 그래프에는 항상 사이클이 없으며, out degree가 0인 정점이 단 하나 존재하고, out degree의 계산값은 1*1행렬이며, 어떤 정점이라도 계산가능한 형태의 입력만 주어진다. 즉, 행렬덧셈정점에서 두 predecessor의 계산값의 Shape가 다르거나, 행렬곱셈정점에서 두 predecessor가 곱할 수 없는 형태인 그래프는 주어지지 않는다.