code in SJTU. main logic done.