o(n) hard