a:6:{i:0;s:12038:"				<div class="h1"><h1>MH 003 Thailand and Singapore Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.sanskrutivacations.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.sanskrutivacations.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>MH 003 Thailand and Singapore 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">
						7 Nights / 8 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Bangkok, Pattaya, 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.sanskrutivacations.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="MH 003 Thailand and Singapore 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="84364"/>
						</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_14/393874/148800.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_14/393874/148800.jpg"  width="150" height="150"    alt="MH 003 Thailand and Singapore Tour" title="MH 003 Thailand and Singapore Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Accommodation for 02 nights in Bangkok<br />
Accommodation for 02 nights in Pattaya<br />
Accommodation for 03 nights in Singapore<br />
Daily Buffet Breakfast.<br />
Airport transfers at all places by coach in Thailand and Singapore<br />
City Tour of Bangkok by coach<br />
Excursion to Coral Island from Pattaya by coach<br />
Alcazar Show in Pattaya by coach.<br />
Half Day Singapore City Tour by coach<br />
Excursion to Night Safari by coach<br />
Excursion to the Jurong Bird Park in Singapore by coach<br />
Excursion to Sentosa Island with the Underwater tour by coach in Singapore. Airfares and ticket taxes<br />
Meals not specified above<br />
Surcharges applicable<br />
Travel and Medical Insurance<br />
Tips and Porterage<br />
Expenses of personal nature<br />
Anything not mentioned in the inclusions above<br />
*Price on Request<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> Bangkok  /  Pattaya
								</p>
								<p class="aj">Welcome to Bangkok ! The start of your holiday. Upon arrival you are met & are transferred to Pattaya. An approximate 2 hrs drive. Pattaya has a lot to offer its visitors in terms of activities & sightseeing. Relax a while & later in the evening you are escorted from your hotel for the famous Alcazar Show.  The show ends close to Dinnertime. Overnight at Pattaya</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> Pattaya
								</p>
								<p class="aj">The day begins a little early this morning as you are taken on a full day excursion to the Coral Island. On the Island you can indulge in water sports & also try your hand at paragliding!! Truly an exhilarating experience!! The tour terminates early evening back at your Hotel. Spend the evening strolling down the avenues of Pattaya skirting the beach or try your hand at bargaining for wares at the shops dotting the Beach. Overnight in Pattaya</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> Pattaya / Bangkok
								</p>
								<p class="aj">This morning its time for you to be transferred back to Bangkok. Check in at the hotel & the rest of the day is free for you. Later in the evening we recommend a memorable cruise down the Chao Phraya River accompanied by a fine meal that is truly an experience of a lifetime. Overnight in Bangkok</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>  Bangkok
								</p>
								<p class="aj">Wake up to breakfast this morning following which you are taken on a city & temple tour of Bangkok. Visit the three famous temples - Wat Pho - one of Bangkok's oldest and largest temples, Wat Trimitr - The Golden Buddha temple and Wat Benjabophit - the Marble Temple.  Later in the afternoon you could spend time shopping at the numerous Malls that dot Bangkok City. Considering all the traffic in Bangkok, the best way for you to save time & money is to make use of the skytrain. Overnight in Bangkok</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> Depart Bangkok - (by Air) - Singapore
								</p>
								<p class="aj">Post breakfast this morning its time for you to check out & be escorted to the Airport in order for you to board your flight to Singapore. Welcome to the Heart of Asia!! A vibrant City which is a pot pourrie of cultures and has something for everyone!! Upon arrival you are met and are transferred to your hotel. Check in and the rest of the day is free for you to relax or indulge in some great shopping bargains at the numerous Shopping Malls that dot Orchard Road. Come evening and we suggest you make a trip to Clark Quay and relax at the cafes dotting the waterfront and try an evening Bumboat ride on the Singapore River. Overnight 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 6:</b> :Singapore
								</p>
								<p class="aj">Wake up to a lazy breakfast this morning following which you are taken on a 2 hour City Tour familiarizing you with the sights of Singapore. The tour terminates back at the hotel. Relax and put your feet up enjoying the amenities available at your Hotel. Later in the afternoon you are picked up and driven to Sentosa Island for your Sentosa Underwater Tour. Here you can see the Merlion - the icon of Singapore and also visit the Underwater World. Have a great experience on the Luge and end the day after the sound and light show - Songs of the sea.The tour terminates back at the Hotel later in the evening. Overnight 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 7:</b> Singapore
								</p>
								<p class="aj">Following breakfast this morning you are taken on a tour to the famous Jurong bird Park where feathered friends greet you and amuse you with their antics!!  Here you will witness some amazing bird shows!  The tour terminates back at the hotel around afternoon. Freshen up and later around 1600 hrs you are picked up for your excursion to the Night Safari.  The tour is truly spectacular and terminates back at your hotel around midnight. Overnight 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 8:</b> Singapore 
								</p>
								<p class="aj">Its time to check out of the Hotel and be transferred to the Airport in time for you to connect your flight back home. Hope you had a wonderful holiday!!</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>
															<li>Hotel</li>
																		<li>Sightseeing</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Airfares and ticket taxes</li><li>
Meals not specified above</li><li>
Surcharges applicable</li><li>
Travel and Medical Insurance</li><li>
Tips and Porterage</li><li>
Expenses of personal nature</li><li>
Anything not mentioned in the inclusions above</li><li>
*Price on Request</li></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.sanskrutivacations.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="MH 003 Thailand and Singapore 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="84364"/>
						</form>
						</div>
						
						";i:1;s:73:"Book MH 003 Thailand and Singapore Tour - 7 Nights / 8 Days Tour Packages";i:2;s:149:"book mh 003 thailand and singapore tour - 7 nights / 8 days tour packages, beach and islands tour packages, bangkok, pattaya, singapore tour packages";i:3;s:185:"Sanskruti Vacations offers MH 003 Thailand and Singapore Tour - 7 Nights / 8 Days tour package, budget Beach and Islands tour packages for Bangkok, Pattaya, Singapore at exciting price.";i:4;s:1193:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Bangkok, Pattaya, Singapore"        
		                 },
		      "description": "Accommodation for 02 nights in Bangkok
Accommodation for 02 nights in Pattaya
Accommodation for 03 nights in Singapore
Daily Buffet Breakfast.
Airport transfers at all places by coach in Thailand and Singapore
City Tour of Bangkok by coach
Excursion to Coral Island from Pattaya by coach
Alcazar Show in Pattaya by coach.
Half Day Singapore City Tour by coach
Excursion to Night Safari by coach
Excursion to the Jurong Bird Park in Singapore by coach
Excursion to Sentosa Island with the Underwater tour by coach in Singapore. Airfares and ticket taxes
Meals not specified above
Surcharges applicable
Travel and Medical Insurance
Tips and Porterage
Expenses of personal nature
Anything not mentioned in the inclusions above
*Price on Request",
		      "name": "MH 003 Thailand and Singapore Tour",
		      "telephone": "+91-9769880881"
		    }
		    </script>
			";i:5;N;}