Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

P141SUMJ - ROUND 1J - Dãy tăng dài nhất

Cho trước tập hợp các bộ 3 số. Bộ ba A (xA, yA, zA) được gọi là nhỏ hơn bộ ba B (xB, yB, zB) khi và chỉ khi xA < xB, yA < yB, zA < zB.

Nhiệm vụ của bạn hãy tìm một tập hợp sao cho sau khi sắp xếp lại các phần tử trong tập hợp này, ta sẽ thu được dãy các bộ ba tăng dần dài nhất có thể.

Input

Gồm nhiều bộ test.

Với mỗi bộ test, dòng đầu tiên gồm 4 số m, n, A, B. Mỗi test gồm có m+n bộ ba số.

m dòng tiếp theo, mỗi dòng gồm 3 số x_i, y_i, z_i (giá trị <= 10^6) miêu tả bộ ba thứ i.

n bộ ba số tiếp theo được thực hiện bằng chương trình như sau:

int a = A, b = B, C = ~(1<<31), M = (1<<16)-1;
int r() {
   a = 36969 * (a & M) + (a >> 16);
   b = 18000 * (b & M) + (b >> 16);
  return (C & ((a << 16) + b)) % 1000000;
}

Thực hiện 3n lần chương trình trên, sẽ thu được các bộ ba tiếp theo x_j, y_j, z_j (m+1 <= j <= m+n).

Giới hạn: m + n <= 3.10^5, 1 <= A, B <= 2^16.

Input kết thúc bởi 4 số 0.

Output

Với mỗi test, in ra chiều dài của dãy bộ ba tăng dài nhất.

Example

Input:
6 0 1 1
0 0 0
0 2 2
1 1 1
2 0 2
2 2 0
2 2 2
5 0 1 1
0 0 0
1 1 1
2 2 2
3 3 3
4 4 4
10 0 1 1
3 0 0
2 1 0
2 0 1
1 2 0
1 1 1
1 0 2
0 3 0
0 2 1
0 1 2
0 0 3
0 10 1 1
0 0 0 0 Output: 3
5
1
3

Được gửi lên bởi:adm
Ngày:2014-06-23
Thời gian chạy:5s
Giới hạn mã nguồn:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Ngôn ngữ cho phép:ASM32-GCC ASM32 MAWK BC C CSHARP C++ 4.3.2 CPP CPP14 COFFEE LISP sbcl DART FORTH GO JAVA JS-RHINO JS-MONKEY KTLN OCT PAS-GPC PAS-FPC PERL PERL6 PROLOG PYTHON PYTHON3 PY_NBC R RACKET SQLITE SWIFT UNLAMBDA

© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.