public boolean simulateInput(String input) {
		/** clear the configurations to begin new simulation. */
		myConfigurations.clear();
		Configuration[] initialConfigs = getInitialConfigurations(input);
		for (int k = 0; k < initialConfigs.length; k++) {
			PDAConfiguration initialConfiguration = (PDAConfiguration) initialConfigs[k];
			myConfigurations.add(initialConfiguration);
		}
		int count = 0;
		while (!myConfigurations.isEmpty()) {
			if (isAccepted())
				return true;
			ArrayList configurationsToAdd = new ArrayList();
			Iterator it = myConfigurations.iterator();
			while (it.hasNext()) {
				PDAConfiguration configuration = (PDAConfiguration) it.next();
				ArrayList configsToAdd = stepConfiguration(configuration);
				configurationsToAdd.addAll(configsToAdd);
				it.remove();
                count++;
                if(count > 10000){
                    int result = JOptionPane.showConfirmDialog(null, "JFLAP has generated 10000 configurations. Continue?");
                    switch (result) {
                    case JOptionPane.CANCEL_OPTION:
                        continue;
                    case JOptionPane.NO_OPTION:
                        return false;
                    default:
                    }
                }
			}
			myConfigurations.addAll(configurationsToAdd);
		}
		return false;
	}