SELECT functioning.park_name 'National Park',functioning.state 'State',MAX(functioning.`Overall Review`) 'Overall Difficulty' FROM ( SELECT user_diff.park_name,user_diff.state,ROUND(tdiff+((udiff-tdiff)*(n/(n+50))),2) AS `Overall Review` FROM ( SELECT AVG(t.`Trail Difficulty`) AS tdiff,AVG(u.Difficulty) AS udiff,COUNT(*) as n ,t.ID trail_id ,t.`Trail Name` trail_name,p.Name park_name ,p.State state FROM UserReview u LEFT JOIN Trails t ON u.Trail_ID=t.ID INNER JOIN Parks p ON t.`National Park`=p.Name GROUP BY p.Name ) AS user_diff ) AS functioning GROUP BY functioning.park_name ORDER BY MAX(functioning.`Overall Review`) DESC