// Path: src/edu/antonym/prototype/Thesaurus.java
// public interface Thesaurus {
// 	public interface Entry {
// 		public int word1();
// 		public int word2();
// 		public boolean isAntonym();
// 	}
// 	public Vocabulary getVocab();
// 	
// 	//Returns the words included in the Thesaurus
// 	public int numEntries();
// 	public int numSynonyms();
// 	public int numAntonyms();
// 	public Entry getEntry(int entryn);
// 	
// 	public int lookupEntry(int word1, int word2, boolean isAnt);
// 
// 	
// 	public boolean isAntonym(int word1, int word2);
// 	public boolean isSynonym(int word1, int word2);
// }
// 
// Path: src/edu/antonym/prototype/Thesaurus.java
// public interface Entry {
// 	public int word1();
// 	public int word2();
// 	public boolean isAntonym();
// }
// 
// Path: src/edu/antonym/prototype/VectorEmbedding.java
// public interface VectorEmbedding extends WordMetric {
// 
// 	int getDimension();
// 	public double[] getVectorRep(int word);
// 	public int findClosestWord(double[] vector);
// 	Vocabulary getVocab();
// }
// 
// Path: src/edu/antonym/prototype/Vocabulary.java
// public interface Vocabulary {
// 	public int size();
// 	public int OOVindex();
// 	public String lookupIndex(int index);
// 	public int lookupWord(String word);
// 	public int getVocabSize();
// }


import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import edu.antonym.prototype.Thesaurus;
import edu.antonym.prototype.Thesaurus.Entry;
import edu.antonym.prototype.VectorEmbedding;
import edu.antonym.prototype.Vocabulary;
		return r.nextInt(max);
	}

	public static int hashIntegerPair(int i, int j, int max) {
		return hashInteger(31*i+j, max);
	}
	
	static class Pair {
		int a;
		int b;
		static int max;
		public Pair(int a, int b) {
			this.a = a;
			this.b = b;
		}
		@Override
	    public int hashCode() {
			int aa = a > b ? a:b;
			int bb = a > b ? b:a;	
			return aa * max + bb;
		}
		@Override
		public boolean equals(Object o) {       
	        Pair c = (Pair) o;	        
	        return a == c.a && b == c.b || a == c.b && b == c.a;
		}
	}
	
	
	public static void main(String[] args) throws IOException{
// Path: src/edu/antonym/prototype/Thesaurus.java
// public interface Thesaurus {
// 	public interface Entry {
// 		public int word1();
// 		public int word2();
// 		public boolean isAntonym();
// 	}
// 	public Vocabulary getVocab();
// 	
// 	//Returns the words included in the Thesaurus
// 	public int numEntries();
// 	public int numSynonyms();
// 	public int numAntonyms();
// 	public Entry getEntry(int entryn);
// 	
// 	public int lookupEntry(int word1, int word2, boolean isAnt);
// 
// 	
// 	public boolean isAntonym(int word1, int word2);
// 	public boolean isSynonym(int word1, int word2);
// }
// 
// Path: src/edu/antonym/prototype/Thesaurus.java
// public interface Entry {
// 	public int word1();
// 	public int word2();
// 	public boolean isAntonym();
// }
// 
// Path: src/edu/antonym/prototype/VectorEmbedding.java
// public interface VectorEmbedding extends WordMetric {
// 
// 	int getDimension();
// 	public double[] getVectorRep(int word);
// 	public int findClosestWord(double[] vector);
// 	Vocabulary getVocab();
// }
// 
// Path: src/edu/antonym/prototype/Vocabulary.java
// public interface Vocabulary {
// 	public int size();
// 	public int OOVindex();
// 	public String lookupIndex(int index);
// 	public int lookupWord(String word);
// 	public int getVocabSize();
// }


// Path: src/edu/antonym/Util.java
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import edu.antonym.prototype.Thesaurus;
import edu.antonym.prototype.Thesaurus.Entry;
import edu.antonym.prototype.VectorEmbedding;
import edu.antonym.prototype.Vocabulary;

		return r.nextInt(max);
	}

	public static int hashIntegerPair(int i, int j, int max) {
		return hashInteger(31*i+j, max);
	}
	
	static class Pair {
		int a;
		int b;
		static int max;
		public Pair(int a, int b) {
			this.a = a;
			this.b = b;
		}
		@Override
	    public int hashCode() {
			int aa = a > b ? a:b;
			int bb = a > b ? b:a;	
			return aa * max + bb;
		}
		@Override
		public boolean equals(Object o) {       
	        Pair c = (Pair) o;	        
	        return a == c.a && b == c.b || a == c.b && b == c.a;
		}
	}
	
	
	public static void main(String[] args) throws IOException{
		Thesaurus t = new ThesaurusImp(new File("data/Rogets/antonym.txt"), new File("data/Rogets/synonym.txt"), new File("data/Rogets/vocabulary.txt"));