Slow implementation (1 ~ 2 hours)