## 1. Problem Description

In the game Little Alchemy, players combine elements to discover new ones. Fire and water make steam. Earth and seeds make a tree. Some combinations are intuitive, others require creativity, dinosaur plus fire becomes a dragon.

You are given a dataset of 150 training combination rules (`item1 + item2 → result`) and 70 test pairs with hidden results. Your job is to predict which result belongs to each test pair.

## 2. Dataset

```
data/
├── train.csv       # 150 rows: item1, item2, result
├── test.csv        # 70 rows: Id, item1, item2 (target hidden)
└── candidates.csv  # 70 rows: result (unique candidate labels)
```

- **Training set:** 150 labeled examples
- **Test set:** 70 pairs to predict
- **Candidates:** The list of 70 possible results for the test set
- All items are lowercase English words or short phrases
- The assignment is bijective, each test pair maps to exactly one unique candidate, and each candidate is used once.

![Alchemy Combination Example](https://imgur.com/bWlfm5A.png) 

## 3. Task

For each of the 70 test pairs, predict the correct result from the candidate list.

**Constraint:** You may only use `bert-base-uncased`, no other pretrained models or external data allowed.