# Hint: 2dup

`2dup` duplicates the top two elements as a pair.

## Understanding 2dup

```seq
1 2 2dup    # Stack: ( 1 2 1 2 )
```

Note: This is different from `dup dup`:

```seq
1 2 dup dup    # Stack: ( 1 2 2 2 ) - WRONG!
```

## Why 2dup Exists

Many operations consume two values. If you need to use them again, `2dup` preserves the pair:

```seq
: compare-and-add ( a b -- a b sum )
    2dup i.+
;
# 3 5 compare-and-add leaves ( 3 5 8 )
```

## Paired Data

Stack-based languages often work with "pairs" of values - coordinates, key-value pairs, ranges. `2dup` treats the top two elements as a unit. This is an early form of **data abstraction** - grouping related values together.

## The Solution

```seq
1 2
2dup
```
