Author: Tran-trong-kim assisted by Bui-Ky and Pham-duy-Khiem.