1006 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			1006 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#ifndef _UNION2_H_
							 | 
						||
| 
								 | 
							
								#define _UNION2_H_
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int unir(int *res, int rows, int tipo, int **ret, int final);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n2
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[2];
							 | 
						||
| 
								 | 
							
								}s2;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n3
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[3];
							 | 
						||
| 
								 | 
							
								}s3;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n4
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[4];
							 | 
						||
| 
								 | 
							
								}s4;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n5
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[5];
							 | 
						||
| 
								 | 
							
								}s5;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n6
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[6];
							 | 
						||
| 
								 | 
							
								}s6;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n7
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[7];
							 | 
						||
| 
								 | 
							
								}s7;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n8
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[8];
							 | 
						||
| 
								 | 
							
								}s8;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n9
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[9];
							 | 
						||
| 
								 | 
							
								}s9;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n10
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[10];
							 | 
						||
| 
								 | 
							
								}s10;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n11
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[11];
							 | 
						||
| 
								 | 
							
								}s11;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n12
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[12];
							 | 
						||
| 
								 | 
							
								}s12;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n13
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[13];
							 | 
						||
| 
								 | 
							
								}s13;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n14
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[14];
							 | 
						||
| 
								 | 
							
								}s14;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n15
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[15];
							 | 
						||
| 
								 | 
							
								}s15;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n16
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[16];
							 | 
						||
| 
								 | 
							
								}s16;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n17
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[17];
							 | 
						||
| 
								 | 
							
								}s17;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n18
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[18];
							 | 
						||
| 
								 | 
							
								}s18;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n19
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[19];
							 | 
						||
| 
								 | 
							
								}s19;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct n20
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									int v[20];
							 | 
						||
| 
								 | 
							
								}s20;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q1
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const int &r1, const int &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										if(r1 != r2)
							 | 
						||
| 
								 | 
							
											return true;
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p2
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s2 &r1, const s2 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 2; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q2
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s2 &r1, const s2 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 2; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o2
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s2 &r1, const s2 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 2; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p3
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s3 &r1, const s3 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 3; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q3
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s3 &r1, const s3 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 3; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o3
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s3 &r1, const s3 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 3; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p4
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s4 &r1, const s4 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 4; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q4
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s4 &r1, const s4 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 4; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o4
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s4 &r1, const s4 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 4; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p5
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s5 &r1, const s5 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 5; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q5
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s5 &r1, const s5 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 5; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o5
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s5 &r1, const s5 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 5; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p6
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s6 &r1, const s6 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 6; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q6
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s6 &r1, const s6 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 6; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o6
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s6 &r1, const s6 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 6; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p7
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s7 &r1, const s7 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 7; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q7
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s7 &r1, const s7 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 7; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o7
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s7 &r1, const s7 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 7; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p8
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s8 &r1, const s8 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 8; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q8
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s8 &r1, const s8 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 8; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o8
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s8 &r1, const s8 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 8; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p9
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s9 &r1, const s9 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 9; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q9
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s9 &r1, const s9 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 9; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o9
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s9 &r1, const s9 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 9; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p10
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s10 &r1, const s10 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 10; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q10
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s10 &r1, const s10 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 10; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o10
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s10 &r1, const s10 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 10; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p11
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s11 &r1, const s11 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 11; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q11
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s11 &r1, const s11 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 11; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o11
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s11 &r1, const s11 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 11; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p12
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s12 &r1, const s12 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 12; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q12
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s12 &r1, const s12 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 12; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o12
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s12 &r1, const s12 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 12; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p13
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s13 &r1, const s13 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 13; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q13
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s13 &r1, const s13 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 13; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o13
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s13 &r1, const s13 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 13; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p14
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s14 &r1, const s14 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 14; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q14
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s14 &r1, const s14 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 14; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o14
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s14 &r1, const s14 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 14; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p15
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s15 &r1, const s15 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 15; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q15
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s15 &r1, const s15 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 15; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o15
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s15 &r1, const s15 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 15; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p16
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s16 &r1, const s16 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 16; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q16
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s16 &r1, const s16 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 16; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o16
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s16 &r1, const s16 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 16; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p17
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s17 &r1, const s17 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 17; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q17
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s17 &r1, const s17 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 17; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o17
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s17 &r1, const s17 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 17; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p18
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s18 &r1, const s18 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 18; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q18
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s18 &r1, const s18 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 18; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o18
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s18 &r1, const s18 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 18; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p19
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s19 &r1, const s19 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 19; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q19
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s19 &r1, const s19 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 19; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o19
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s19 &r1, const s19 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 19; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct p20
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s20 &r1, const s20 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 20; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct q20
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s20 &r1, const s20 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 20; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] != r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct o20
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									__host__ __device__
							 | 
						||
| 
								 | 
							
									bool operator()(const s20 &r1, const s20 &r2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										int x;
							 | 
						||
| 
								 | 
							
										for(x = 0; x < 20; x++)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(r1.v[x] > r2.v[x])
							 | 
						||
| 
								 | 
							
												return true;
							 | 
						||
| 
								 | 
							
											if(r1.v[x] < r2.v[x])
							 | 
						||
| 
								 | 
							
												return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 |