Множныя выклікі IIFE ў JavaScript

Хай вам прапануюць хітрую задачу: зрабіць некалькі выклікальных дужак, вось так:

javascript(function() {
  // нейкі код
})()(); // некалькі выклікальных дужак

Калі паразважаць, то становіцца відавочна, што ў дадзеным выпадку выклік функцыі на месцы павінен вяртаць ананімную функцыю, вось так:

javascript(function() {
  return function() {
    console.log('!');
  };
})()(); // вывядзе '!'
Задание 1

Дапішыце наступны код так, каб яго запуск вывядзіў '!':

javascript(function() {
  // нейкі код
})()()();
Задание 2

Дапішыце наступны код так, каб яго запуск вывядзіў суму перададзеных параметрамі лікаў:

javascript(function() {
  // нейкі код
})(1)(2);
Задание 3

Дапішыце наступны код так, каб яго запуск вывядзіў суму перададзеных параметрамі лікаў:

javascript(function() {
  // нейкі код
})(1)(2)(3);