a:6:{i:0;s:10694:"				<div class="h1"><h1>Treats of Singapore and Cruise - Inside Cabin(5 Nights) Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.rajastravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.rajastravels.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Treats of Singapore and Cruise - Inside Cabin(5 Nights) 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">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Singapore</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.rajastravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Treats of Singapore and Cruise - Inside Cabin(5 Nights) 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="66325"/>
						</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_13/370602/121685.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/370602/121685.jpg"  width="150" height="150"    alt="Treats of Singapore and Cruise - Inside Cabin(5 Nights) Tour" title="Treats of Singapore and Cruise - Inside Cabin(5 Nights) 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> Arrive Singapore (Evening Free for Leisure)
								</p>
								<p class="aj">Optional - Night Safari<br />
<br />
On your arrival at Changi International Airport, our tour co-ordinator will meet you at the specified area and transfer you to the hotel. Check-in and relax (Standard Check in time: 1400 - 1500 hours). Rest of the day is at your own leisure.<br />
<br />
In the evening, you can opt to go for the exclusive experience of ‘Night Safari’ (at extra cost). It is world’s first Night Safari set in 40 hectares of green foliage. Witness the mystic beauty of the tropical jungle after dusk with stunning light effects. See the nocturnal animals coming close to you with their bright shining eyes, wandering in their natural habitat under moonlit lights. You are completely safe and comfortable in your tram that takes you throughout the area of different habitats designed imitating the specific natural environments from around the world. Later return back to the hotel for a relaxed sleep.<br />
<br />
Stay overnight at hotel 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 2:</b> Day Free - Get Onboard SuperStar Gemini
								</p>
								<p class="aj">Have a fill at morning breakfast and enjoy a relaxed morning. Check out from hotel (1200 hours). Day is at leisure until your pick up at the hotel lobby for transfer to Harbour Front Centre to board your cruise liner- Super Star Gemini. Cruise sailing starts at 2100 hours, boarding starts 4 hours prior to departure. After a warm welcome on board, explore and enjoy the various facilities offered.<br />
<br />
Stay overnight on board Super Star Gemini. (B)</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> Sail to Malacca / Pulau Tioman in Malaysia
								</p>
								<p class="aj">Wake up to an exotic morning over the seas. Enjoy a bed tea while taking stunning sea views. Refresh and enjoy a wide spread of morning breakfast on board. Today the ship arrives at Malacca / Pulau Tioman in Malaysia (according to your sailing dates). You can stay on cruise to enjoy its several activities or you can step out and explore the destination on your own. Make sure to return to the ship in specified time. Enjoy all meals on cruise.<br />
<br />
Stay overnight on board Super Star Gemini.</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> Disembark Cruise - Evening Free for Leisure
								</p>
								<p class="aj">Enjoy another beautiful morning over the deep seas. Relish wide spread breakfast and enjoy the aura for a while longer before going back to the land. Cruise arrives back to Singapore at 1200 hours. Disembark and meet our local tour representative who transfers you to the hotel. Check-in and relax. Rest of the day is free at your own leisure.<br />
<br />
It can take a while to get back to the feeling of being on land. We suggest you to take rest today. In evening however if you feel like, you can step out to take leisurely strolls and relish some local delicacies.<br />
<br />
Stay overnight at hotel 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> Half day City tour - Remaining day Free
								</p>
								<p class="aj">After having morning breakfast, set out for a City Tour. Drive round the Central Business District passing the Cricket Club, Parliament house, Supreme Court, etc. See the glorified Orchard Road with its best brand showrooms. Visit the enchanting China Town and get awed with the dazzling gems at the Gem Gallery. Then we visit Marina Bay, the most clicked Singapore’s landmark. The sheer exuberance of the area will leave you open jawed. See the majestic Marina Bay Sands and the ‘wonder’ful architecture of the Esplanade and how can you miss the Lion while being at the Lion City! Yes. Click great pictures in front of the Merlion. We also visit Little India, to make you feel at home!<br />
<br />
Later, you can choose to return to the hotel or we suggest you to opt for an Afternoon trip to Sentosa Island (at extra cost) for a fun filled day ahead. Post sunset, enjoy the amazing show named ‘Wings of the Time’. Return to the hotel after having dinner at an Indian restaurant.<br />
<br />
Stay overnight at hotel in Singapore. (B)</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 - Departure
								</p>
								<p class="aj">Charge yourself with the morning breakfast at the hotel, pack your bags and check out from the hotel (1200 hours). Catch your transfer to the airport and board your flight back home. We would be waiting to get your feedback once you return. (B)</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.rajastravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Treats of Singapore and Cruise - Inside Cabin(5 Nights) 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="66325"/>
						</form>
						</div>
						
						";i:1;s:99:"Book Treats of Singapore and Cruise - Inside Cabin(5 Nights) Tour - 5 Nights / 6 Days Tour Packages";i:2;s:148:"book treats of singapore and cruise - inside cabin(5 nights) tour - 5 nights / 6 days tour packages, heritage tour packages, singapore tour packages";i:3;s:193:"Book Treats of Singapore and Cruise - Inside Cabin(5 Nights) Tour - 5 Nights / 6 Days tour packages from RAJAS TRAVELS - Get attractive 5 Nights / 6 Days Heritage  tour packages for  Singapore.";i:4;s:441:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Singapore"        
		                 },
		      "description": "",
		      "name": "Treats of Singapore and Cruise - Inside Cabin(5 Nights) Tour",
		      "telephone": "+91-9820123553"
		    }
		    </script>
			";i:5;N;}