static int multiplications(int target)
	{
		LinkedList<ArrayList<Integer>> sets = new LinkedList<ArrayList<Integer>>();
		ArrayList<Integer> starterSet = new ArrayList<Integer>();
		starterSet.add(1);
		sets.addFirst(starterSet);
		int currentRound = 1;
		while (true)
		{
			boolean found = false;
			int numSets = sets.size();
			for (int i = 0; i < numSets; i++)
			{
				ArrayList<Integer> currentSet = sets.removeFirst();
				int setSize = currentSet.size();
				for (int j = 0; j < setSize; j++)
					for (int k = 0; k < setSize; k++)
					{
						int product = currentSet.get(j) + currentSet.get(k);
						if (product == target)
							found = true;
						else if (product < target && !currentSet.contains(product))
						{
							ArrayList<Integer> nextSet = copy(currentSet);
							nextSet.add(product);
							if (unique(sets, nextSet))
								sets.addLast(nextSet);
						}
					}
			}
			if (found)
				break;
			currentRound++;
		}
		return currentRound;
	}