solutions from zhanglei