Can not set dirty directly. Because `n` may equal to 0.