#
Set with duplicates
^{
}

We specified that a set would be represented as a list with no duplicates. Now suppose we allow duplicates. For instance, the set
`{1,2,3}`

could be represented as the list
`(2 3 2 1 3 2 2)`

. Design procedures
`element-of-set?`

,
`adjoin-set`

,
`union-set`

, and
`intersection-set`

that operate on this representation. How does the efficiency of each compare with the corresponding procedure for the non-duplicate representation? Are there applications for which you would use this representation in preference to the non-duplicate one?

```
(define first '(1 2 3 5 3))
(define second '(3 4 5 6 5))
(check-equal? (union-set first second) '(5 6 5 4 3 1 2 3 5 3))
(check-equal? (intersection-set first second) '(3 5 3))
(check-equal? (intersection-set second first) '(3 5 5))
```