Wielokrotne wywołania IIFE w JavaScript

Załóżmy, że postawiono przed Tobą podchwytliwe zadanie: zrobić kilka par nawiasów wywołujących, o tak:

javascript(function() {
  // jakiś kod
})()(); // kilka nawiasów wywołujących

Jeśli się zastanowić, to staje się oczywiste, że w tym przypadku wywołanie funkcji natychmiastowej powinno zwracać funkcję anonimową, o tak:

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

Dopisz następujący kod tak, aby jego uruchomienie wypisywało '!':

javascript(function() {
  // jakiś kod
})()()();
Задание 2

Dopisz następujący kod tak, aby jego uruchomienie wypisywało sumę przekazanych parametrami liczb:

javascript(function() {
  // jakiś kod
})(1)(2);
Задание 3

Dopisz następujący kod tak, aby jego uruchomienie wypisywało sumę przekazanych parametrami liczb:

javascript(function() {
  // jakiś kod
})(1)(2)(3);