Maikeru's new implementation

家で解いてみました。最初から作りすぎないようにしたつもりです。