int main(int argc, char *argv[]) {
	// Time start
	cout << Utils::timecall("START");
	
	string outputString = "";
	
	for(int i = 1; i <= NUMBER_OF_FILES; ++i) {
	
		// so that we can have leading zeros.
		stringstream ss;
		ss << setw(3) << setfill('0') << i;
		string number = ss.str();
		
  	    string templateFile = "../dat/" + number + "_template.dat";
		string AU01queryFile = "../dat/" + number + "_AU01_query.dat";
		string AU12queryFile = "../dat/" + number + "_AU12_query.dat";
		string AU17queryFile = "../dat/" + number + "_AU17_query.dat";
		
		Compare compare;
		
		compare.setTemplate(templateFile);
		
		compare.setQuery(AU01queryFile);
		compare.compare();
		compare.setQuery(AU12queryFile);
		compare.compare();
		compare.setQuery(AU17queryFile);
		compare.compare();
	}
	
	cout << outputString << endl;
	// Time Finish
	cout << Utils::timecall("FINISH");
	
	return 0;
}
inline int EffectiveCompare_Aux(const Compare& comp, const T1& t1, const T2& t2, boost::mpl::true_ hasTriCompare)
{
	return comp.compare(t1, t2);
}
	int compare(const T1& x, const T2& y) const
	{
		return m_comp.compare(operator()(x), operator()(y));
	}