I am receiving an intermittent check engine light. When I read the codes I get P0172 and P0175 saying both banks rich. I have the 3.0l engine. I have cleaned the MAS and the throttle body and replaced the air filter. The engine runs normal no loss of power and only once did it idle rough but not but a few seconds. I have received one time P0304 misfire for number 4 cylinder. I reset the codes and after about 3 days when I hook up the code reader it shows clean. Then about a month later the codes pop back up saying too rich. I had a mechanic do a diagnostic because I was going to replace the spark plugs and he mentioned a TSB for cleaning the fuel injectors, which are cross hatch direct injection, which was going to be another 300 dollar repair bill for doing the top end cleaning and fuel additive. The vehicle has 122,000 miles on it.