• 20

## Goal

Write a program that, given an expression composed of finite sets, unions, intersections, differences and parentheses, returns the values ​​contained in the resulting set.
Input
A string consisting of N sets, unions ('U'), intersections ('I'), differences ('-') and parentheses.

A set can be written with brackets [ ], or braces { }. It contains whole numbers, positive or negative, separated by semicolons ';'.

- If the set is written with braces, then it contains only the values ​​between braces, eg {4;3;-2} contains only the values ​​4, 3 and -2.

- If the set is written with brackets, then it is an interval, eg: [-2;2] contains the values ​​-2, -1, 0, 1 and 2.
Pay attention to the orientation of the brackets: the set can also be noted [a;b[ for example, in this case it contains all the values ​​of a included to b excluded. You will encounter all the variants: ]a;b[, ]a;b], [a;b[ and [a;b].

Sets' endpoints with braces are not necessarily ordered, while sets' endpoints with brackets are always ordered.

Pay attention to parentheses, which prioritize some operations over others.
Output
All the numbers contained in the resulting set, ordered, separated by spaces.
If the resulting set is empty, instead print EMPTY.
Constraints
1 ≤ N ≤ 10
-100 ≤ numbers ≤ 100
Example
Input
{2;3;1}
Output
1 2 3

A higher resolution is required to access the IDE

Join the CodinGame community on Discord to chat about puzzle contributions, challenges, streams, blog articles - all that good stuff!
Online Participants