# ComplexNumber Class

You are asked to create a class

`ComplexNumber`

that encapsulates the behavior of a complex number. A complex number is a number that can be expressed in the form `a + bi`

, where `a`

and `b`

are real numbers, and `i`

is a solution of the equation

. Because no real number satisfies this equation, `i`

is called an imaginary number (

).Your

`ComplexNumber`

class should have the following attributes:`real`

: The real part of the complex number (`a`

)

`imaginary`

: The imaginary part of the complex number (`b`

)

You have to implement these magic methods:

`__add__`

: This method should add two complex numbers and return a new`ComplexNumber`

object that represents the result:`.`

`__sub__`

: This method should subtract one complex number from another and return a new`ComplexNumber`

object that represents the result:`.`

`__mul__`

: This method should multiply two complex numbers and return a new`ComplexNumber`

object that represents the result:`.`

`__truediv__`

: This method should divide one complex number by another and return a new`ComplexNumber`

object that represents the result:`.`

Besides the numerical magic methods, you should also implement a

`__str__`

magic method that would return the complex number as `<real> + <imaginary> i`

.Input | Output |

`print(ComplexNumber(1, 1) + ComplexNumber(2, 2)); print(ComplexNumber(2, 3) - ComplexNumber(1, 1)); print(ComplexNumber(2, 3) * ComplexNumber(1, 1)); print(ComplexNumber(2, 2) / ComplexNumber(1, 1)); print(ComplexNumber(1, 1) - ComplexNumber(2, 3))` | 3 + 3 i
1 + 2 i
-1 + 5 i
2.0 + 0.0 i
-1 + -2 i |

#### Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB