#include using namespace std; #define st first #define nd second #define pb push_back #define left xycfsd #define right gfdgfdgfd using ll = long long; using db = double; using ldb = long double; using pii = pair; using pll = pair; const int D = 360; const int N = 20 + 7; int dist[D][N][D]; bool onring[N][D], left[N][D], right[N][D], in[N][D], out[N][D]; int n; struct Node { int v; int r; int a; }; int dif(int a,int b) { return (a-b+360)%360; } int main() { scanf("%d", &n); for (int i = 0; i < n; ++i) { int k; scanf("%d", &k); for (int j = 0; j < k; ++j) { int a, b; scanf("%d%d", &a, &b); for (int t = a; t != b; t = (t + 1) % D) { onring[i][t] = true; } onring[i][b] = true; left[i][a] = true; right[i][b] = true; } scanf("%d", &k); for (int j = 0; j < k; ++j) { int d; scanf("%d", &d); in[i + 1][d] = true; out[i][d] = true; } } for (int i = 0; i <= n; ++i) for (int j = 0; j < D; ++j) { if (in[i][j] || out[i][j]) { if (!onring[i][j]) { left[i][j] = right[i][j] = true; onring[i][j] = true; } } } int r1, a1; scanf("%d%d", &r1, &a1); int r2, a2; scanf("%d%d", &r2, &a2); for (int k = 0; k < D; ++k) for (int i = 0; i <= n; ++i) for (int j = 0; j < D; ++j) dist[k][i][j] = -1; queue q, q1; dist[180][r1][a1] = 0; q.push({180, r1, a1}); while (!q.empty()) { auto [v, r, a] = q.front(); q.pop(); if(!onring[r][a]) continue; int d = dist[v][r][a]; // spadamy w out // printf("siema %d %d", r, a); if(out[r][a] && (dif(v,a) <= 45 || dif(v,a) >= 315)) { if(dist[v][r+1][a] == -1) { dist[v][r+1][a] = d; q.push({v,r+1,a}); } } // spadamy w gore else if(in[r][a] && dif(v,a) >= 135 && dif(v,a) <= 225) { if(dist[v][r-1][a] == -1) { dist[v][r-1][a] = d; int a; q.push({v,r-1,a}); } } // spadamy w prawo else if(!left[r][a] && dif(v,a) < 180 && dif(v,a) != 0) { if(dist[v][r][(a+1+D)%D] == -1) { dist[v][r][(a+1+D)%D] = d; q.push({v,r,(a+1+D)%D}); } } // spadamy w lewo else if(!right[r][a] && dif(v,a) > 180) { if(dist[v][r][(a-1+D)%D] == -1) { dist[v][r][(a-1+D)%D] = d; q.push({v,r,(a-1+D)%D}); } } else { //printf("%d %d\n", r, a); if(r == r2 && a == a2 && onring[r][a]) { cout<