Множественные вызовы IIFE в JavaScript

Пусть вам предложат хитрую задачу: сделать несколько вызывающих скобок, вот так:

javascript(function() {
  // какой-то код
})()(); // несколько вызывающих скобок

Если поразмыслить, то становится очевидно, что в данном случае вызов функции на месте должен возвращать анонимную функцию, вот так:

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

Допишите следующий код так, чтобы его запуск выводил '!':

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

Допишите следующий код так, чтобы его запуск выводил сумму переданных параметрами чисел:

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

Допишите следующий код так, чтобы его запуск выводил сумму переданных параметрами чисел:

javascript(function() {
  // какой-то код
})(1)(2)(3);