1006 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			1006 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
#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
 |