private void loadInputData() {
		men = new ArrayList<Person>();
		women = new ArrayList<Person>();
		try {
			FileInputStream fstream = new FileInputStream("input-indifference.tsv");
			DataInputStream in = new DataInputStream(fstream);
			BufferedReader br = new BufferedReader(new InputStreamReader(in));
			String strLine;
			Map<String, Person> peopleMap = new HashMap<String, Person>();
			Map<Person, List<String>> preferencesMap = new HashMap<Person, List<String>>();
			while ((strLine = br.readLine()) != null) {
				String[] split = strLine.split("\t");
				String personName = split[0];
				List<String> personPreferences = new ArrayList<String>();
				for(int i = 1; i < split.length; i++) {
					personPreferences.add(split[i]);
				}
				Gender gender;
				// define o genero da pessoa: homem, mulher ou indefinido :)
				if(personName.startsWith("m")) {
					 gender = Gender.MAN;
				}
				else if(personName.startsWith("w")) {
					gender = Gender.WOMAN;
				}
				else {
					gender = Gender.UNDEFINED;
				}
				Person person = new Person(personName, gender);
				// dependendo do genero da pessoa, adicionamos na lista de homens ou mulheres
				if(person.getGender() == Gender.MAN) {
					men.add(person);
				}
				else {
					women.add(person);
				}
				peopleMap.put(personName, person);
				preferencesMap.put(person, personPreferences);
			}
			
			// este for eh necessario para mapear strings em objetos Person
			for(Person p : preferencesMap.keySet()) {
				List<List<Person>> listPreferences = new ArrayList<List<Person>>();
				for(int i = 0; i < preferencesMap.get(p).size(); i++) {
					List<Person> internalList = new ArrayList<Person>();
					String[] peopleInPos = preferencesMap.get(p).get(i).split(",");
					for(String person : peopleInPos) {
						internalList.add(peopleMap.get(person));
					}
					listPreferences.add(i, internalList);
				}
				p.setPreferences(listPreferences);
			}
			in.close();
		} catch (Exception e) {
			System.err.println("Error: " + e.getMessage());
		}
	}