import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

public class Main {

    static class Test {

        public long result;
        public List<Integer> values;

        Test(long r, List<Integer> v) {
            this.result = r;
            this.values = v;
        }

        boolean part1() {
            int possibleCombinations = (int) Math.pow(2, this.values.size());

            for (int i = 0; i < possibleCombinations; i++) {
                long newResult = this.values.get(0);
                for (int j = 1; j < this.values.size(); j++) {
                    if ((i >> j) % 2 == 0) {
                        newResult += this.values.get(j);
                    } else {
                        newResult *= this.values.get(j);
                    }
                }
                if (newResult == this.result) {
                    return true;
                }
            }
            return false;
        }

        boolean part2() {
            int possibleCombinations = (int) Math.pow(3, this.values.size());

            for (int i = 0; i < possibleCombinations; i++) {
                long newResult = this.values.get(0);
                for (int j = 1; j < this.values.size(); j++) {
                    long value = this.values.get(j);
                    long trin = ((long) (i / Math.pow(3, j)) % 3);
                    if (trin == 0) {
                        newResult += value;
                    } else if (trin == 1) {
                        newResult *= value;
                    } else {
                        newResult = Long.valueOf("" + newResult + value);
                    }
                }
                if (newResult == this.result) {
                    return true;
                }
            }
            return false;
        }
    }

    static ArrayList<Test> parseInput() {
        ArrayList<Test> output = new ArrayList<Test>();
        try {
            File input = new File("input.txt");
            Scanner reader = new Scanner(input);
            while (reader.hasNextLine()) {
                String data = reader.nextLine();
                String[] parts = data.split(":");
                long result = Long.valueOf(parts[0]);
                List<Integer> values = Arrays.asList(parts[1].trim().split(" "))
                    .stream()
                    .map(s -> Integer.parseInt(s))
                    .collect(Collectors.toList());
                output.add(new Test(result, values));
            }
            reader.close();
        } catch (FileNotFoundException e) {
            System.out.println("Ups...");
        }
        return output;
    }

    public static void main(String args[]) {
        ArrayList<Test> tests = parseInput();
        tests.removeIf(t -> !t.part1());
        long total = tests.stream().mapToLong(t -> t.result).sum();
        System.out.println("Part 1");
        System.out.println(total);

        tests = parseInput();
        tests.removeIf(t -> !t.part2());
        total = tests.stream().mapToLong(t -> t.result).sum();
        System.out.println("Part 2");
        System.out.println(total);
    }
}