There are a number of ways you can do this, two of them being:
1. Use 4 story variables (one per place) to track if the Reader has visited a particular Passage yet.
1a. Initialise each of the 4 story variables within your story's startup tagged special Passage.
(set: $visitedPassageA to false)
(set: $visitedPassageB to false)
(set: $visitedPassageC to false)
(set: $visitedPassageD to false)
1b. When the Reader views the Passage named "Passage A" then update the $visitedPassageA variable, the same for the other passages and variables.
(set: $visitedPassageA to true)
1c. Use and (if:) macro like the following to determine if all the relevant variables are equal to true.
(if: $visitedPassageA and $visitedPassageB and $visitedPassageC and $visitedPassageD)[
(goto: "Other Passage")
]
2. Check the array returned by the (history:) macro to determine if it contains the Passage Name of all 4 places.
(set: _visited to (history:))
(if: _visited contains "Passage A" and _visited contains "Passage B" and _visited contains "Passage C" and _visited contains "Passage D")[
(goto: "Other Passage")
]
note:
The array return by the (history:) macro grows in length for each and every passage visited, so it can contain the same passage name more than once. Searching though the whole array multiple times for 4 passage names is not an efficient process, the variable based solution has it's own issues because those variables will be stored/saved with each moment within the History sub-system.