fork(4) download
  1. #include <iostream>
  2. #include <math.h>
  3.  
  4.  
  5.  
  6. const double PI = 3.14159265;
  7.  
  8. template<typename Type>
  9. auto bezwzgledna(Type var)
  10. {
  11. if (var < 0)
  12. return -var;
  13. else
  14. return var;
  15. }
  16.  
  17.  
  18. class Wspolrzedna
  19. {
  20. private:
  21.  
  22. public:
  23. double x;
  24. double y;
  25. Wspolrzedna() {}
  26. Wspolrzedna(double a, double b) : x(a), y(b) {}
  27. bool operator==(Wspolrzedna & druga)
  28. {
  29. if (x == druga.x && y == druga.y)
  30. return true;
  31. else
  32. return false;
  33. }
  34. };
  35.  
  36. class Bierka
  37. {
  38. private:
  39. bool minus(double a) { if (a < 0) return true; else return false; }
  40. bool getLineIntersection(double p0_x, double p0_y, double p1_x, double p1_y, double p2_x, double p2_y, double p3_x, double p3_y)
  41. {
  42. double s1_x, s1_y, s2_x, s2_y;
  43. s1_x = p1_x - p0_x;
  44. s1_y = p1_y - p0_y;
  45. s2_x = p3_x - p2_x;
  46. s2_y = p3_y - p2_y;
  47. double s, t;
  48. s = (-s1_y * (p0_x - p2_x) + s1_x * (p0_y - p2_y)) / (-s2_x * s1_y + s1_x * s2_y);
  49. t = (s2_x * (p0_y - p2_y) - s2_y * (p0_x - p2_x)) / (-s2_x * s1_y + s1_x * s2_y);
  50.  
  51.  
  52.  
  53. if (s > 0 && s < 1 && t > 0 && t < 1)
  54. return true;
  55. else
  56. return false;
  57.  
  58. }
  59.  
  60. public:
  61. Wspolrzedna pierwsza;
  62. Wspolrzedna druga;
  63. Bierka() {}
  64. Bierka(double x1, double y1, double x2, double y2) : pierwsza(x1, y1), druga(x1, y1) {}
  65. bool null() {
  66. if (pierwsza == druga)
  67. return true;
  68. else
  69. return false;
  70. }
  71. bool L(Bierka & second);
  72. bool X(Bierka & second) { return getLineIntersection(pierwsza.x, pierwsza.y, druga.x, druga.y, second.pierwsza.x, second.pierwsza.y, second.druga.x, second.druga.y); }
  73. bool V(Bierka & second);
  74. bool koniec_styczny(Bierka & second);
  75.  
  76.  
  77. // Metody sprawdzające czy funkcja jest stała i jaka konkretnie
  78. bool stala() { if (pierwsza.x == druga.x || pierwsza.y == druga.y) return true; else return false; }
  79. bool stala_y() { if (pierwsza.x == druga.x) return true; else return false; }
  80. bool stala_x() { if (pierwsza.y == druga.y) return true; else return false; }
  81. };
  82.  
  83. bool Bierka::koniec_styczny(Bierka & second)
  84. {
  85. if (
  86. ((druga == second.druga) && !(pierwsza == second.pierwsza)) ||
  87. ((druga == second.pierwsza) && !(pierwsza == second.druga)) ||
  88. (!(druga == second.druga) && (pierwsza == second.pierwsza)) ||
  89. (!(druga == second.pierwsza) && (pierwsza == second.druga))
  90. )
  91. return true;
  92. else
  93. return false;
  94. }
  95.  
  96. bool Bierka::L(Bierka & second)
  97. {
  98. if (koniec_styczny(second) && !stala() && !second.stala())
  99. {
  100. double a1, a2;
  101.  
  102. if (druga.x != pierwsza.x)
  103. a1 = (druga.y - pierwsza.y) / (druga.x - pierwsza.x);
  104. else
  105. a1 = 0;
  106. if (second.druga.x != second.pierwsza.x)
  107. a2 = (second.druga.y - second.pierwsza.y) / (second.druga.x - second.pierwsza.x);
  108. else
  109. a2 = 0;
  110.  
  111. if (a1*a2 == -1)
  112. return true;
  113. else return false;
  114. }
  115. else if (koniec_styczny(second) && ((stala_x() && second.stala_y()) || (stala_y() && second.stala_x())))
  116. return true;
  117. else
  118. return false;
  119.  
  120. }
  121.  
  122.  
  123.  
  124. bool Bierka::V(Bierka & second)
  125. {
  126. if (koniec_styczny(second))
  127. {
  128. double x_vektora, y_vektora, second_x_vektora, second_y_vektora;
  129.  
  130. // Warunki określające początek wektorów (tak aby oba wektory miały początek w punkcie wspólnym
  131. if (druga == second.druga)
  132. {
  133. x_vektora = pierwsza.x - druga.x;
  134. y_vektora = pierwsza.y - druga.y;
  135. second_x_vektora = second.pierwsza.x - second.druga.x;
  136. second_y_vektora = second.pierwsza.y - second.druga.y;
  137. }
  138. else if (druga == second.pierwsza)
  139. {
  140. x_vektora = pierwsza.x - druga.x;
  141. y_vektora = pierwsza.y - druga.y;
  142. second_x_vektora = second.druga.x - second.pierwsza.x;
  143. second_y_vektora = second.druga.y - second.pierwsza.y;
  144. }
  145. else if (pierwsza == second.druga)
  146. {
  147. x_vektora = druga.x - pierwsza.x;
  148. y_vektora = druga.y - pierwsza.y;
  149. second_x_vektora = second.pierwsza.x - second.druga.x;
  150. second_y_vektora = second.pierwsza.y - second.druga.y;
  151. }
  152. else if (pierwsza == second.pierwsza)
  153. {
  154. x_vektora = druga.x - pierwsza.x;
  155. y_vektora = druga.y - pierwsza.y;
  156. second_x_vektora = second.druga.x - second.pierwsza.x;
  157. second_y_vektora = second.druga.y - second.pierwsza.y;
  158. }
  159.  
  160.  
  161.  
  162. double angle;
  163.  
  164.  
  165. double kat_main = atan2(y_vektora, x_vektora) * 180 / PI;
  166. double kat_second = atan2(second_y_vektora, second_x_vektora) * 180 / PI;
  167.  
  168. // warunki sprawdzające czy atan dało wynik ujemny
  169. if (kat_main < 0)
  170. kat_main = 360 - bezwzgledna(kat_main);
  171. if (kat_second < 0)
  172. kat_second = 360 - bezwzgledna(kat_second);
  173.  
  174. angle = bezwzgledna(kat_main - kat_second);
  175.  
  176. if (angle < 90 && angle > 0)
  177. return true;
  178. else
  179. return false;
  180. }
  181. }
  182.  
  183.  
  184.  
  185. int main()
  186. {
  187. int ile;
  188. std::cin >> ile;
  189. Bierka * bierki = new Bierka[ile * 2];
  190. double x1, y1, x2, y2;
  191.  
  192. for (int i = 0; i < ile * 2; i++)
  193. {
  194. std::cin >> x1 >> y1 >> x2 >> y2;
  195. bierki[i].pierwsza.x = x1;
  196. bierki[i].pierwsza.y = y1;
  197. bierki[i].druga.x = x2;
  198. bierki[i].druga.y = y2;
  199. }
  200. char * liczby_rzymskie = new char[ile];
  201. for (int i = 0, g = 0; i < ile * 2; i += 2, g++)
  202. {
  203. if (bierki[i].L(bierki[i + 1]))
  204. liczby_rzymskie[g] = 'L';
  205.  
  206. else if (bierki[i].X(bierki[i + 1]))
  207. liczby_rzymskie[g] = 'X';
  208.  
  209. else if (bierki[i].V(bierki[i + 1]))
  210. liczby_rzymskie[g] = 'V';
  211.  
  212. else
  213. liczby_rzymskie[g] = '-';
  214. }
  215.  
  216. long double iloczyn = 1;
  217. for (int i = 0; i < ile; i++)
  218. {
  219. switch (liczby_rzymskie[i])
  220. {
  221. case 'L':
  222. printf("L\n");
  223. iloczyn *= 50;
  224. break;
  225. case 'X':
  226. printf("X\n");
  227. iloczyn *= 10;
  228. break;
  229. case 'V':
  230. printf("V\n");
  231. iloczyn *= 5;
  232. break;
  233. case '-':
  234. printf("-\n");
  235. }
  236. }
  237. printf("%.llf", iloczyn);
  238.  
  239. delete[] liczby_rzymskie;
  240. delete[] bierki;
  241.  
  242. return 0;
  243. }
Success #stdin #stdout 0s 3420KB
stdin
477
4 1 3 0
0 3 3 0
0 4 2 2
2 4 0 0
1 1 3 3
1 1 3 1
0 2 6 0
3 1 4 3
0 2 6 0
6 0 7 2
0 2 6 0
6 0 5 -2
0 0 2 0
2 0 4 0
0 0 2 0
0 0 4 0
0 0 5 0
2 -1 2 2
0 0 2 2
2 2 4 4
0 0 2 3
2 0 0 3
0 0 2 3
3 0 0 2
2 3 0 0
3 0 0 2
2 3 0 0
2 0 0 3
0 0 2 2
2 0 0 2
2 2 0 0
2 0 0 2
0 0 2 2
2 2 2 4
0 0 2 2
2 4 2 2
0 0 2 2
2 2 4 0
2 2 0 0
4 0 2 2
9 6 17 18
10 14 10 14
12 8 12 0
0 8 5 14
16 8 10 0
7 12 13 16
3 12 9 18
19 0 3 9
6 8 18 12
1 8 15 1
1 14 17 7
14 14 14 14
13 3 2 17
6 12 7 8
17 1 5 16
12 17 2 0
13 11 17 12
12 7 19 12
15 5 13 8
16 1 19 19
2 9 4 14
19 8 14 11
11 17 10 11
8 15 6 4
0 14 18 15
18 12 1 18
5 13 17 6
3 2 15 9
3 5 3 19
0 2 5 17
3 11 11 7
5 12 19 17
7 5 6 17
17 6 9 19
7 2 19 18
6 10 16 14
1 9 7 12
12 2 11 13
12 16 5 3
14 17 0 4
17 13 14 6
14 14 19 3
5 1 8 11
17 3 12 5
4 10 12 11
19 9 12 16
2 3 5 18
3 8 13 5
3 12 2 7
4 17 18 13
3 2 18 6
14 12 5 2
6 10 3 18
13 5 19 15
13 8 0 16
1 16 8 13
16 4 0 2
17 12 13 18
6 0 6 11
2 0 5 12
15 8 2 8
10 1 5 14
11 4 1 5
4 12 12 1
3 12 8 5
4 0 16 1
7 2 13 3
10 1 2 10
11 5 9 17
3 13 18 6
13 14 17 11
7 9 18 2
11 2 1 18
12 8 15 17
10 19 10 8
2 0 0 5
19 5 17 1
7 15 18 16
10 12 1 8
10 17 1 0
12 14 19 2
14 16 2 14
9 4 8 4
2 3 16 8
2 13 8 14
7 9 8 19
2 17 14 10
10 4 6 15
4 14 18 17
17 10 10 12
19 6 7 18
9 13 10 3
9 11 6 10
9 16 13 7
2 11 5 7
1 4 7 3
10 17 18 6
11 7 19 1
2 2 14 6
18 11 7 16
0 0 4 0
1 1 4 1
0 -9 5 9
3 6 7 -6
0 -8 3 -2
8 3 3 -9
3 1 8 7
-6 0 7 -7
-9 0 6 5
7 2 -9 8
-5 -1 9 7
3 -4 -6 -2
-3 -1 -1 7
-9 1 -6 -3
2 -6 4 -1
-4 4 -1 0
-4 -7 0 6
-7 -2 0 6
1 -5 -8 9
-4 -7 -2 3
8 -2 6 -5
-7 -8 5 1
9 -6 -5 4
-8 -9 -8 9
-7 1 3 1
6 -1 8 -1
-3 9 -4 -2
6 8 -9 6
3 2 8 1
8 9 -7 8
-2 0 -2 4
7 6 5 4
-4 -7 5 -9
-2 -5 -2 3
2 3 -1 6
5 -6 9 -1
1 6 0 -3
-7 -8 4 -5
-8 -7 2 9
0 -1 9 -7
-5 -9 -3 2
-6 1 -5 -1
-2 6 -7 -6
-2 -1 4 -4
5 -6 -1 -1
0 -1 -6 0
4 -6 -3 0
-4 0 -3 -7
1 0 -5 -1
0 2 7 -8
0 -4 -2 2
0 7 7 7
0 -2 -2 -2
8 -1 0 9
-9 -7 -2 -9
4 -1 3 -2
7 -3 -2 6
2 7 0 -7
2 2 -6 1
2 -3 -2 -2
-4 1 -1 -8
-7 -9 4 0
3 -4 8 1
0 -7 -4 4
-5 8 5 5
3 -4 5 9
9 -1 4 9
0 1 7 6
3 4 -2 5
0 -9 -5 7
5 -3 4 7
-2 3 -5 6
-8 1 4 0
7 1 1 1
8 7 1 -1
5 7 9 -3
9 -2 4 -2
-4 -7 4 3
7 1 9 7
0 -7 3 1
-8 9 -7 5
9 -1 -5 9
9 4 -4 5
8 0 -6 5
-6 -8 0 -9
-9 4 8 0
6 0 -8 1
-1 0 -4 5
-2 -6 0 -4
-8 8 5 -8
5 -8 3 3
-5 3 1 -2
3 0 -6 6
8 -3 -5 0
-9 7 1 0
-8 -8 -5 6
-1 -3 -6 4
-6 -1 -8 -5
2 -1 -6 4
8 -5 5 -3
3 -6 9 -7
7 -8 -1 4
-1 9 0 6
8 -1 8 -4
-2 2 -3 -9
9 0 -7 -6
4 -9 -1 -5
-9 -7 -3 0
4 2 -3 3
-5 -7 -4 -2
-1 -8 -8 6
-4 7 5 0
2 1 7 -2
-4 6 5 1
-3 -3 7 -1
-3 3 -7 -2
-7 -9 2 0
5 8 8 -3
1 4 6 2
-5 2 1 5
-4 7 -1 6
9 -3 6 2
-2 -8 3 3
0 -4 -6 5
-8 -8 4 0
-8 -5 9 -5
-5 4 -8 0
7 -5 5 3
-5 5 -7 -8
0 -4 -1 3
-7 -8 7 7
4 9 2 8
-7 2 1 -3
5 -3 9 7
5 3 6 0
-2 -5 -5 7
-8 -8 3 5
2 -9 -6 0
-5 -8 4 6
-4 -7 8 -6
5 0 0 1
5 -6 9 7
-9 0 9 -6
-2 5 0 -1
1 8 -1 -6
9 0 0 7
-6 9 -8 9
1 -2 9 0
0 -5 -9 0
-6 2 -2 0
9 -5 7 9
-3 1 9 -7
2 1 -6 5
-6 -4 -8 -8
-9 6 -1 7
9 1 4 -8
-3 -3 6 -7
-7 -2 8 -5
-7 6 -7 7
7 6 8 -1
9 4 -4 -9
-5 0 -7 3
-9 4 -8 -6
1 7 1 3
6 8 -1 5
2 -2 -5 5
8 4 5 -1
-5 9 3 0
-2 4 0 -2
0 -6 3 -2
6 -9 -9 4
-4 -6 0 9
7 0 -8 3
-9 -7 -3 -6
8 -7 -1 -7
-9 -4 3 -3
2 1 9 2
-7 -5 1 -6
-2 -2 -7 8
6 -7 0 2
-6 -4 1 -8
-8 -4 9 0
6 -4 3 -3
9 0 -2 -4
0 6 7 -5
-2 -4 1 -3
0 -4 -4 -4
7 6 1 1
-1 8 -6 5
-6 -1 9 -9
-6 4 3 7
-6 4 -6 0
7 -7 3 -3
5 0 -3 -5
-5 5 9 -2
-9 -3 -4 -4
-5 6 -7 1
8 -8 -3 4
-4 0 -3 9
2 8 0 -2
6 -8 0 8
3 -1 -4 9
6 -4 -5 -3
-1 -7 -8 1
-2 1 -2 4
-2 7 4 8
8 -3 1 -2
4 6 -3 0
-2 -9 -7 -5
0 9 0 -8
-4 -4 -2 0
-1 0 8 -2
-7 8 -9 -5
9 -8 4 2
-2 5 6 0
5 -5 -4 -8
3 8 -3 3
-2 6 2 8
-9 -8 1 6
2 4 1 3
-1 8 9 -1
-7 -1 -9 -3
-4 6 -3 -6
9 7 -5 9
-4 -4 -3 -8
-6 2 8 -7
-9 -1 0 -2
0 -4 -3 -7
-2 5 -1 -9
-3 -5 9 -8
-8 4 1 0
0 -2 -9 -3
2 -9 3 3
2 -4 3 -2
6 -3 -7 -2
9 3 5 -2
-8 -5 4 4
0 -1 2 8
4 -9 -9 -1
9 1 -6 6
-9 -1 -3 -3
3 1 0 -8
5 -8 -3 -8
-7 -1 -5 1
-2 -1 8 3
2 -2 7 0
2 2 0 -1
9 5 4 4
-1 2 -3 6
1 1 -2 -5
-9 -3 9 -1
0 7 2 1
-9 -8 2 -1
6 5 -5 5
0 8 -6 -1
7 -1 2 7
-9 -9 3 -8
6 -2 -7 -9
-8 9 0 -1
-3 -1 9 -1
8 -4 -4 3
-9 5 -4 5
-8 -9 1 8
-9 -4 -2 2
0 1 3 7
1 0 1 0
-7 9 -4 -5
-3 -6 6 5
9 3 3 9
-4 2 -9 6
-6 7 8 -8
3 -6 -5 8
-2 0 -5 -1
1 7 -1 -1
4 0 4 -6
-4 0 8 9
3 7 -3 0
-7 9 5 -5
-4 4 -7 9
-6 7 -4 -9
1 0 7 1
9 2 4 6
9 0 -3 -5
2 8 -3 6
5 -9 8 -9
4 8 6 0
6 6 -1 -3
-8 -2 0 6
-8 1 1 -7
-6 7 -1 0
1 2 -2 9
-9 -1 -1 -9
6 -9 -5 -4
-6 6 2 -8
6 9 -7 8
0 0 -1 7
-2 -5 6 0
5 2 6 -5
-4 3 4 2
6 -2 2 7
-9 -3 -5 9
4 2 6 -5
-5 -7 -3 -7
2 8 2 -2
-1 0 -2 0
-3 9 3 3
3 9 1 -9
0 9 -6 -7
-8 -5 -9 9
2 -4 -5 5
1 -1 3 -6
0 0 -1 5
7 3 0 0
-7 0 -6 6
-2 -1 -8 2
9 -5 2 -3
5 -5 -4 -9
-2 -5 9 -9
1 0 1 0
-7 -4 -9 8
-7 -9 -2 -5
2 -6 -6 6
7 9 -3 5
-6 1 0 0
6 1 5 -7
0 -3 0 -7
0 -2 -8 7
9 -2 -1 -9
7 9 0 3
2 -1 0 4
7 -7 6 -1
6 -6 -1 6
-7 -4 -4 -8
-6 4 0 -2
-9 -8 -7 -2
7 0 6 -8
5 1 -2 1
-2 0 5 5
-3 1 -5 5
-4 1 -5 3
6 2 -7 0
0 4 4 -2
3 1 1 -3
7 7 -7 -4
-9 -3 -6 -9
-5 -5 -7 0
-5 -3 1 4
2 2 -7 5
0 7 4 5
4 -1 2 -6
5 -8 -6 -9
9 1 3 -4
7 1 -2 4
-1 0 9 -5
-8 -8 0 -8
-1 7 9 -1
-8 9 -4 -9
0 1 9 9
-3 5 -6 5
-4 -4 7 0
-1 -7 6 -2
-7 -1 5 -7
1 -7 5 -5
7 4 -6 -1
0 -4 7 -8
-4 -4 -3 0
-5 1 -4 -5
-9 -8 -8 -6
0 8 0 5
-7 6 4 -6
-8 5 4 -5
-1 0 5 -1
-8 -7 9 5
-7 0 0 6
-3 4 -3 -3
5 7 4 -1
-1 4 -5 -8
3 -8 -6 -5
-6 9 0 -7
1 -1 -6 -2
6 -9 -8 -6
-9 -6 -2 4
4 0 -1 4
-5 -1 2 8
0 2 8 -9
-5 -2 0 8
3 1 0 -8
-6 -9 -5 9
-7 -6 0 -3
-5 7 -4 -2
-7 -5 -4 -7
7 0 -5 0
-1 0 -7 2
0 0 -6 6
0 -7 9 6
2 9 -9 4
8 -5 9 0
9 9 -7 6
-1 -3 -2 7
9 6 -8 1
7 -6 6 9
8 8 5 -4
1 0 0 0
3 4 4 1
3 2 5 5
0 1 2 4
5 2 1 4
2 4 0 1
4 5 5 5
4 3 4 3
3 4 4 4
0 2 3 2
2 2 1 3
3 1 5 1
4 0 5 4
3 5 3 1
2 3 0 4
4 3 2 5
5 4 3 0
0 0 0 0
0 1 3 4
0 1 5 2
1 2 1 4
5 4 4 5
5 2 3 1
5 3 0 3
1 1 3 5
1 1 0 2
0 1 4 0
0 1 1 0
3 2 2 2
4 0 5 2
3 2 1 0
4 2 3 5
3 4 3 3
5 1 3 5
0 1 4 1
2 5 1 3
5 3 3 1
4 2 1 5
2 3 5 0
5 3 4 0
1 1 1 1
0 4 4 0
3 2 5 3
1 0 0 4
2 3 0 4
3 1 3 0
4 2 0 1
3 2 0 5
1 1 4 1
4 0 0 1
3 5 3 2
4 3 1 0
5 5 2 2
4 5 0 3
5 1 2 3
3 2 0 5
2 2 4 0
2 4 5 5
2 2 0 0
4 1 4 1
4 0 3 2
3 2 3 0
3 0 3 4
0 1 1 2
3 4 0 0
2 0 3 2
0 3 2 4
2 4 5 0
4 1 1 5
3 4 0 4
2 1 0 3
3 0 3 0
4 4 4 4
4 2 1 4
3 1 1 0
0 0 4 2
5 5 2 2
4 0 4 4
1 5 1 2
3 5 1 1
3 5 5 5
5 4 3 3
0 4 1 0
3 5 0 2
5 2 3 1
0 1 5 2
4 5 2 1
4 3 2 5
3 0 4 0
2 5 3 2
2 4 0 5
2 5 1 1
5 2 0 0
4 3 0 2
2 2 2 0
0 2 3 1
0 1 1 3
1 3 3 3
5 2 0 1
1 5 0 0
2 4 0 4
2 0 4 4
3 0 3 3
3 0 4 3
0 3 0 1
0 2 2 0
4 2 5 5
1 0 5 1
4 0 5 0
4 4 3 1
4 4 2 5
4 4 3 4
0 1 3 0
3 5 4 1
5 4 0 5
2 4 0 4
2 0 3 0
2 0 0 0
4 2 0 0
5 1 3 5
2 0 3 0
4 2 5 3
4 4 0 4
2 1 2 4
5 5 4 1
3 2 5 5
5 3 0 2
4 1 5 5
1 2 5 3
2 2 5 0
0 5 4 2
4 5 4 3
2 1 2 0
3 2 5 0
5 3 2 2
4 1 1 4
2 4 1 4
0 0 3 1
4 5 1 2
4 0 0 1
1 2 5 2
2 2 3 0
4 5 2 2
5 3 4 5
1 4 3 1
2 4 0 0
4 0 3 0
4 1 5 3
1 4 5 4
1 2 4 5
0 4 5 3
1 2 2 0
0 5 5 2
4 0 1 0
4 4 0 2
5 0 3 4
2 2 0 1
3 2 0 1
0 4 4 1
0 0 5 4
3 5 0 5
3 1 5 1
3 4 1 0
2 2 5 4
2 5 0 5
2 4 4 2
0 2 2 0
2 5 4 4
4 3 3 1
2 1 0 0
3 5 0 5
1 3 1 2
1 5 1 3
2 4 3 2
0 3 1 1
3 5 5 5
0 0 5 3
5 5 1 2
3 1 1 4
3 1 0 4
0 0 5 0
4 0 3 2
4 4 3 5
1 0 4 2
5 1 5 4
1 0 1 4
5 0 0 0
5 5 4 4
3 3 4 5
2 1 1 0
5 3 3 1
1 5 3 0
1 0 5 0
4 4 2 1
2 0 2 2
5 0 0 0
2 4 3 4
0 5 2 3
0 3 2 1
2 3 0 1
3 3 1 5
1 3 1 1
4 3 3 1
1 1 0 1
0 3 5 4
0 5 1 0
2 2 0 3
5 4 4 1
1 0 0 0
1 1 1 3
2 3 5 2
4 5 3 4
0 1 0 1
0 0 5 1
2 5 2 1
3 0 2 2
4 1 2 4
0 2 1 3
5 4 5 3
1 0 0 2
1 4 3 0
4 2 1 4
0 3 4 1
1 0 4 0
5 4 2 0
0 3 3 5
2 0 1 3
0 5 3 2
3 0 0 0
1 1 4 1
2 2 2 3
1 4 1 0
3 3 0 3
5 1 1 1
5 0 2 4
5 0 4 2
4 4 2 5
5 5 0 5
1 1 2 2
5 2 1 0
5 5 2 4
1 3 3 4
1 4 2 0
2 0 0 0
4 1 4 1
0 2 0 5
1 1 0 1
3 1 1 0
0 3 3 5
4 4 4 5
0 0 3 2
5 4 1 3
5 3 3 3
5 3 2 1
2 0 0 3
1 5 4 0
1 5 3 5
1 1 3 2
0 0 4 5
2 3 0 5
0 3 2 0
5 3 5 1
1 5 3 3
4 1 1 3
4 4 3 5
4 4 1 4
4 4 3 5
1 1 4 2
5 1 0 2
2 5 1 3
2 4 4 0
3 3 4 1
2 5 5 4
3 4 2 5
2 3 4 4
4 1 4 1
0 4 3 2
1 3 3 3
1 0 1 5
3 5 4 3
2 3 1 3
2 1 1 2
4 3 4 1
4 2 2 4
4 4 4 5
1 2 2 0
0 4 5 3
1 2 5 2
5 0 3 5
2 4 0 4
2 4 5 4
5 0 3 3
4 1 1 3
1 1 3 1
3 1 3 3
3 2 5 0
0 0 4 2
5 4 5 5
2 4 3 1
4 4 3 0
0 2 1 5
3 5 1 5
0 4 2 1
4 5 1 4
5 5 5 2
3 4 1 4
0 3 3 3
1 0 3 5
0 5 5 4
2 4 1 0
0 3 1 4
2 2 2 5
0 5 2 1
3 1 5 4
4 3 1 0
1 2 5 2
5 2 4 1
0 5 5 4
0 0 2 0
1 3 5 5
2 5 0 4
1 0 0 5
1 5 3 2
1 1 2 5
1 4 0 2
3 0 0 3
4 1 3 5
4 1 4 4
0 3 2 1
3 2 5 2
1 0 2 1
1 5 0 1
1 4 3 5
2 1 0 1
2 2 4 4
1 1 1 1
2 3 1 3
4 4 5 3
4 1 4 4
4 2 5 4
1 0 3 3
1 1 2 2
1 5 4 2
4 5 4 0
1 3 3 5
1 0 2 3
1 5 1 4
1 4 2 2
4 3 4 4
2 4 4 4
3 0 4 5
0 2 5 1
3 0 4 2
0 0 0 0
5 5 2 1
4 2 1 0
5 5 2 5
2 4 3 3
5 2 3 3
2 0 2 4
1 0 0 5
4 0 5 2
0 5 1 2
1 2 0 4
0 1 4 2
5 5 5 2
5 0 5 0
1 1 4 0
5 4 5 4
3 3 0 1
2 1 1 4
1 1 0 1
2 4 1 0
4 5 2 1
5 0 1 0
1 3 0 5
0 0 3 3
3 1 2 3
2 3 5 3
2 0 3 5
4 4 3 0
3 5 2 1
5 1 1 5
3 2 4 3
0 5 4 1
0 4 4 0
1 4 1 3
4 2 0 0
1 3 5 2
1 1 3 4
0 3 3 3
3 5 4 1
2 2 2 2
0 4 0 5
0 2 1 2
4 1 3 3
3 2 4 2
1 5 0 5
2 2 1 3
5 5 4 2
100000 100000 100000 -100000
-100000 100000 -100000 100000
100000 100000 -100000 -100000
-100000 100000 100000 -100000
3 5 3 19
0 2 5 17
-1000000 1000000 -1000000 -1000000
-1000000 -1000000 1000000 -1000000
-1000000 -1000000 1000000 1000000
-1000000 1000000 1000000 -1000000
-1000000 1000000 -1000000 -1000000
-1000000 -1000000 1000000 -999999
stdout
L
X
V
-
-
V
-
-
X
-
X
X
X
X
X
X
-
-
L
L
-
-
-
-
-
-
X
X
-
-
-
-
X
X
X
-
-
-
-
X
X
-
-
-
-
X
-
-
-
-
X
X
-
X
X
-
-
-
-
X
-
-
X
X
-
-
-
-
-
-
-
X
-
-
X
-
-
-
V
X
-
-
-
X
-
-
-
-
-
-
-
-
-
-
-
-
-
-
X
-
X
-
X
X
-
-
-
X
-
-
-
-
-
X
-
-
-
X
-
-
X
-
X
-
-
-
-
-
-
-
-
X
X
-
-
-
-
-
X
-
-
-
X
-
-
-
-
-
-
-
-
-
-
-
-
X
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
X
-
-
-
-
-
-
-
-
-
-
-
-
X
-
X
-
X
-
-
-
-
-
-
-
-
-
X
-
-
X
-
-
-
X
-
-
X
-
-
-
-
-
-
-
X
-
X
-
-
-
-
-
-
-
-
-
X
-
-
-
-
-
X
-
-
-
X
-
X
-
-
X
-
-
-
-
-
-
X
-
-
-
-
-
-
-
X
X
-
-
-
-
-
-
-
-
-
X
X
-
-
X
-
-
-
-
-
-
V
-
-
V
V
-
-
-
-
-
X
-
-
-
-
-
-
-
-
-
-
V
-
-
-
X
-
-
-
-
-
-
X
V
X
-
X
-
X
-
X
-
V
-
-
-
V
-
-
-
-
-
-
V
X
-
-
-
X
-
-
-
V
X
-
X
-
-
X
V
X
-
-
-
-
-
-
-
-
-
V
-
-
-
-
-
-
-
-
-
X
-
-
X
-
-
-
-
-
-
-
V
-
-
-
-
-
-
V
-
-
-
V
-
-
-
-
V
-
-
-
-
-
V
-
-
-
V
-
X
-
-
-
-
-
-
-
-
-
-
-
-
-
-
X
-
-
-
X
-
-
X
X
X
V
-
-
-
-
-
-
-
-
-
-
L
X
-
-
-
-
-
V
-
-
-
-
-
-
X
X
-
X
-
-
X
-
-
-
-
-
-
X
X
L
X
V
37252902984619140616986673709324299145942010539677306359969874598353993403320478840805561884983402094196010222878720