// Q2
import java.util.Scanner;
import java.util.List;
import java.util.LinkedList;
import java.util.ArrayList;

public class ITLogsMgmtQ2 { 
	
	public static final String MSG_STORE_NOTHING = "[Store Nothing]";
	
	// This is the method that Dylan will call.
	// Preconditions	: items non-null, lexicographically sorted ASC.
	// Postconditions	: items not modified, all storage options printed
	public void enumerateOptions(List<String> items) {
		enumerateOptions(items, 0, new ArrayList<String>());
	}
	private void enumerateOptions(List<String> items, int currIdx,
		ArrayList<String> selectedItems) {
		if (currIdx >= items.size()) { // Base Case: No more items
			for (String item : selectedItems)
				System.out.println(item);
			if (selectedItems.isEmpty())
				System.out.println(MSG_STORE_NOTHING);
			System.out.println();
			return;
		}
		ArrayList<String> selectedCopy =
			new ArrayList<String>(selectedItems);
		selectedCopy.add(items.get(currIdx));
		enumerateOptions(items, currIdx+1, selectedCopy); // Pick curr
		enumerateOptions(items, currIdx+1, selectedItems); // Ignore curr
	}
	
	public static void main(String[] args) {
		ITLogsMgmtQ2 soln = new ITLogsMgmtQ2();
		List<String> items = new LinkedList<String>();
		Scanner scan = new Scanner(System.in);
		while(scan.hasNext())
			items.add(scan.nextLine()); // is this equiv to addLast() or addFirst()?
		scan.close();
		soln.enumerateOptions(items);
	}
}
