a:6:{i:0;s:10769:"				<div class="h1"><h1>Singapore and Cruise Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.nomadicsteps.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.nomadicsteps.co.in/packages.htm" title="Packages">Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Singapore and Cruise Tour</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						6 Nights / 7 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Singapore, Malacca</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.nomadicsteps.co.in/enquiry-form-10003.htm">
						<input type="hidden" name="subject" value="Singapore and Cruise Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="89498"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_16/466826/155239.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_16/466826/155239.jpg"  width="150" height="150"    alt="Singapore and Cruise Tour" title="Singapore and Cruise Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrival in Singapore
								</p>
								<p class="aj">As soon as you arrive in Singapore, get to meet our  representative who escorts you to your pre-booked hotel. Singapore is an exotic and one of the world's most vibrant tourist destinations. Incredible beaches, amazing food, a dynamic nightlife and a wonderful shopping hotspot defines the country. The place is full of most enormous entertainment options and a breathtaking city scape that is worth admiring. Expend rest of the day at your wish.<br />
<br />
Stay overnight at your hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Singapore - Cruise
								</p>
								<p class="aj">Wake up to brace yourself for an enjoyable city tour. Get served with an energizing breakfast and leave for a drive through amazing landmarks within the city. Begin the tour with Padang Cricket Club located in the interior of "The Colonial Heart" and flanked by other remarkable buildings such as The Supreme Court and City Hall, Parliament House, St. Andrew's Cathedral and other important structures. Visit the oldest temple in Singapore, The Thian Hock Keng Temple as well as The Fukein or Hoklo Temple.<br />
<br />
Later in the day, tour to Merlion Park and savor the wonderful views of Marina Bay. The last part of the day is highlighted by the exotic cruise. Get transferred to the Cruise Port to board Super Star Gemini Cruise. Relish the lip smacking dinner and spend the night on cruise to enjoy the fabulous ambience.<br />
<br />
Overnight stay on cruise.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Cruise - Port Klang/Malacca
								</p>
								<p class="aj">Today, after breakfast (of your choice), the day is at leisure. Enjoy the facilities and events on the cruise. Later, have lunch on- board (Complimentary) or opt for a stopover at Port Klang/Malacca. De-board the cruise and you have several options of entertainment to choose from. You can simply relax by the beaches or you can explore the various attractions. Both these places are dotted with several allures. Return to the cruise.<br />
<br />
Stay overnight.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Cruise - Singapore - Night Safari Tour
								</p>
								<p class="aj">In the morning, have lip-smacking breakfast (of your choice) on the cruise. Later, disembark from the cruise and get transferred to the hotel in Singapore. The evening is scheduled for an exciting Night Safari. Settle into a tram and get ready a 40-minute journey through the wilderness, varying from the Himalayan foothills to the wild Equatorial Africa. As the tram moves and the animals keep on arriving, a live commentary giving information goes on in the background. You can spot varied animals species including tapirs, lions, tigers, rhinos, deer, civets, owl and other nocturnal animals. Thereafter, attend a 20-minute animal presentation, the Creatures of the Night Show. Back to the hotel.<br />
<br />
Overnight stay in Singapore.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Singapore
								</p>
								<p class="aj">Post breakfast in the hotel, the day is at leisure. In the afternoon, embark on a Sentosa Twilight Tour, including one-way cable car ride, admission ticket and visits to the SEA Aquarium, Merlion Tower, and Wings of Time show, some of its wonderful charms. An amalgam of activities as well as attractions, Sentosa Island has splendid lush ambiance. This paradise has tropical resort, themed attraction, heritage center, Nature Park and more. Have a fun-filled day here. Return to the hotel.<br />
<br />
Stay overnight.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Singapore
								</p>
								<p class="aj">On day 6, post breakfast, get all set for full day universal studio tour. One of the best attractions in Singapore, Universal Studio is a thrilling adventure for people of all ages. The first Hollywood movie theme park of Asia, Universal Studios has numerous thrilling rides and other exciting attractions such as shows, based on popular television series and chartbuster movies. The park is divided into varied theme sections- Hollywood, Ancient Egypt, SCI-FI city, New York, Far Far Away, Madagascar, and Lost World. Shrek 4-D Adventure, Ultimate 3D Battle, Jurassic Park Rapids Adventures, Madagascar ride, Revenge of the Mummy, Battlestar Galactica: HUMAN vs. CYLON dueling Coasters are some of the main rides and attractions here.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 7:</b> Departure from Singapore
								</p>
								<p class="aj">After breakfast, get an assisted transfer to the airport to board a flight for your onward journey.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
												</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.nomadicsteps.co.in/enquiry-form-10003.htm">
						<input type="hidden" name="subject" value="Singapore and Cruise Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="89498"/>
						</form>
						</div>
						
						";i:1;s:64:"Book Singapore and Cruise Tour - 6 Nights / 7 Days Tour Packages";i:2;s:131:"book singapore and cruise tour - 6 nights / 7 days tour packages, beach and islands tour packages, singapore, malacca tour packages";i:3;s:161:"Nomadic Steps offers Singapore and Cruise Tour - 6 Nights / 7 Days tour package, budget Beach and Islands tour packages for Singapore, Malacca at exciting price.";i:4;s:415:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Singapore, Malacca"        
		                 },
		      "description": "",
		      "name": "Singapore and Cruise Tour",
		      "telephone": "+91-9469261146"
		    }
		    </script>
			";i:5;N;}