understand the pattern