a:6:{i:0;s:17077:"				<div class="h1"><h1>Vietnam - Private Classic Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.gloriousholidaysindia.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.gloriousholidaysindia.com/packages.htm" title="Packages">Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Vietnam - Private Classic 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">Tour Code </td>
						<td class="p5px pl0px vat">GHMAA105</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						8 Nights / 9 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Ha Noi</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						USD 999 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.gloriousholidaysindia.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Vietnam - Private Classic 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="22243"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" id="detailslider1">
															<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_9/251436/41327.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/251436/41327.jpg"  height="150"  width="150"    alt="Vietnam - Private Classic Tour" title="Vietnam - Private Classic Tour" /></a></p></div></li>
																		<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_9/251436/41328.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/251436/41328.jpg"  height="150"  width="150"    alt="Vietnam - Private Classic Tour" title="Vietnam - Private Classic Tour" /></a></p></div></li>
																		<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_9/251436/41330.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/251436/41330.jpg"  height="150"  width="150"    alt="Vietnam - Private Classic Tour" title="Vietnam - Private Classic Tour" /></a></p></div></li>
																		<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_9/251436/41331.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/251436/41331.jpg"  height="150"  width="150"    alt="Vietnam - Private Classic Tour" title="Vietnam - Private Classic Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					All international airport tax<br />
International flights & domestic flights<br />
Early check in or late check out<br />
Travel insurance <br />
Optional tours<br />
Visa arrangement & Visa stamp at international gate. <br />
Drink & Beverage in meals<br />
Compulsory TIPPING for local guide and van driver01-1015-04<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> Saigon Arrival
								</p>
								<p class="aj">Upon arrival, you will be received by your guide and transferred to your hotel for check-in. <br />
Overnight in Saigon. Distance Airport - Central: 7 - 8km - 30 minute transfer.</p>					
									<p><b>Meals : </b> Dinner at Tandoor Restaurant (or similar) - Authentic Indian Cuisine)</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> Cu Chi Tunnels 
								</p>
								<p class="aj">Morning start with Cu Chi Tunnels which were never discovered by American Force. These tunnels are stretching over 200 km and were important Viet Cong base during the American War. This underground network, dug by hand connected command posts hospital shelter and weapon factories.<br />
Afternoon, wind through District One before heading to the famous Saigon landmarks, the post office and the Cathedral of Notre Dame as well as the Centre Post Office and pass by the ornate City Hall (Hotel De Ville) and old Opera House. Visit the Unification Palace which formerly was Independence palace of the South Vietnamese President.<br />
Overnight in Saigon.<br />
Distance Saigon Central - Cu Chi Tunnels: 45 km à 1.5 hour transfer</p>					
									<p><b>Meals : </b> Breakfast at hotel<br />
Lunch at Ganesh Restaurant (or similar) - Authentic Indian Cuisine)<br />
Dinner at Asokha Restaurant (or similar) - Authentic Indian Cuisine)</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> Saigon
								</p>
								<p class="aj">Transfer to outskirt of Saigon and begins the tour on the beautiful countryside road.<br />
Start at Tourist Boat Station (My Tho), cruising on Tien (Mekong) river and seeing four islands: Dragon, Unicorn, Tortoise, Phoenix. Enjoy fresh coconut juice. To visit fish floating market and Fish-craft village along Tien River. Stop at Thoi Son island, go walking around countryside road, seeing orchards, enjoy tropical fruits and listen to traditional music. Take a rowing boat on small canal with beautiful scenery of country side, to visit honey-bee farm and enjoy honey-tea. Stop at Phoenix island to visit Coconut Monk Temple and Crocodile-pond. To boat up Tien River to Tan Thach canal (Ben Tre) visit coconut candy workshop and handicraft workshop.<br />
Overnight in Saigon.<br />
Distance Saigon Central - My Tho: 75km - 2 hour transfer.</p>					
									<p><b>Meals : </b> Breakfast at hotel<br />
Lunch at Hao Ai Restaurant (or similar) - Vietnamese Cuisine (no pork)<br />
Dinner at Tandoor Restaurant (or similar) - Authentic Indian Cuisine)</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> Saigon - Hoian Via Danang Airport
								</p>
								<p class="aj">After breakfast transfer to Tan Son Nhat Airport for the short flight to the central port city of Danang. On arrival in Danang transfer to Hoi An, a major Asian trading port in the 17th and 18th centuries whose architecture and relaxed lifestyle has changed little over the years. Take a walking tour of the ancient town centre to visit the former merchants' homes, the 400 year-old Japanese Covered Bridge and the colourful market. Rest of the day at leisure.<br />
Overnight in Hoian.<br />
Distance Saigon Central - Saigon Airport: 7 - 8km - 30 minute transfer.<br />
Danang Airport - Hoian: 35km ? 45 minute transfer</p>					
									<p><b>Meals : </b> Breakfast at hotel<br />
Lunch at Ganesh Restaurant (or similar) - Authentic Indian Cuisine<br />
Dinner at Tam Tam Café Restaurant (or similar) - Vietnamese Cuisine/ or at Sunrise resort in case you book 5* class.</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> Hoian - Hue
								</p>
								<p class="aj">Leave Hoi An for Hue, the former imperial capital of Vietnam. Its mesmerizing tombs and mausoleums of the last emperors of Vietnam reveal fascinating insights into the lives of the imperial families and their subjects. The ancient citadel reflects the pomp and ceremony of the dynastic rulers as well as the scars of many years of turmoil, both ancient and modern (the Royal Citadel was badly damaged in the latter stages of the war) but retains a sense of grace and majesty even today.<br />
Drive through Danang before climbing over the Pass of Ocean Clouds and dropping down to the wonderfully photogenic fishing village of Lang Co. In Hue visit the Imperial Citadel where the Nguyen Dynasty ruled between 1802 and 1945. Latter visit Khai Dinh's Tomb which is traditional Vietnamese in design with a European touch making it unique from other tombs in Hue.<br />
Overnight in Hue.<br />
Distance Hoian - Hue: 155km à 3.5 hour transfer included breaktime on the way.</p>					
									<p><b>Meals : </b> Breakfast at hotel<br />
Lunch at Phuoc Thanh Restaurant (or similar) - Vietnamese Cuisine<br />
Dinner at Banana Flower Restaurant (or similar) - Vietnamese Cuisine</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> Hue - Hanoi
								</p>
								<p class="aj">Breakfast at hotel and free at your own time till transfer to airport for your flight to the next destination. Upon arrival in Hanoi, our local guide will pick you up and transfer to hotel for check in. <br />
Overnight in Hanoi<br />
<br />
Distance Hue Central - Phu Bai Airport (in Hue): 15 km ? 45 minute transfer<br />
Noi Bai Airport - Hanoi Central: 35 km - 45 minute transfer.</p>					
									<p><b>Meals : </b> Breakfast at 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 7:</b> Hanoi - Halong
								</p>
								<p class="aj">Take half day tour to visit Hanoi. Go to visit: Ho Chi Minh's Complex, including Ho Chi Minh’s Mausoleum (closed on Mondays and Fridays) - the final resting place of the Vietnamese great father or uncle Ho, President Ho Chi Minh’s stilt House - where he lived on and off from 1958 to 1969, the next place to move to is One Pillar Pagoda - a group of structures consisting of a pagoda and a tower built in the middle of a square lake. Leave One Pillar Pagoda, we will visit Temple of Literature - the first national university of Vietnam. <br />
In the after noon, depart to Halong Bay - one of the New Seven Wonders and World Heritage Site. Check in hotel. <br />
Overnight in Halong<br />
<br />
Distance Hanoi - Halong: 165km ? 4 hour transfer including breaktime on the way.</p>					
									<p><b>Meals : </b> Breakfast at hotel <br />
Lunch at Nameste Restaurant (or similar) - Authentic Indian Cuisine<br />
Dinner at Van Xuan Restaurant (Vietnamese cuisine)</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> Halong - Hanoi
								</p>
								<p class="aj">In the morning take a cruise by a private boat to visit Ha Long Bay. The cruise shall last for 4 hours with Thien Cung grotto and enjoy the beauty of nature of Halong Bay. Lunch on boat with seafood. Come back to Hanoi in the late afternoon. Short visit Ngoc Son Temple on Hoan Kiem Lake. Enjoy Water puppet show before having dinner at Indian Restaurant. <br />
Overnight in Hanoi.<br />
<br />
Distance Halong - Hanoi: 165km ? 4 hour transfer including breaktime on the way.</p>					
									<p><b>Meals : </b> Breakfast at hotel <br />
Lunch on boat<br />
Dinner at Khazana Restaurant (or similar) - Authentic Indian Cuisine</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 9:</b> Hanoi Departure
								</p>
								<p class="aj">Free time for relax and shopping until your transfer to the airport  for your onward flight.<br />
Distance Hanoi Central - Noi Bai Airport: 35 km - 45  minute transfer.<br />
End of the service!</p>					
									<p><b>Meals : </b> Breakfast at hotel</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>Meals</li>
																		<li>Sightseeing</li>
																		<li>Transport</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>All international airport tax</li><li>
International flights & domestic flights</li><li>
Early check in or late check out</li><li>
Travel insurance </li><li>
Optional tours</li><li>
Visa arrangement & Visa stamp at international gate. </li><li>
Drink & Beverage in meals</li><li>
Compulsory TIPPING for local guide and van driver</li></ul><br />
												<p class="large b mb5px dif">Specific Departure Dates :</p>Validity: 01 Jan – 31 Dec 2014<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<p>Our rate is quoted in US dollars per adults based on twin/ double room and applied for private tour. Rate is applicable for Indian passport holder only. The above tour prices are based on our current transportation rates. Increasing petrol rates might affect our transportation and boat fees, in which case we reserve the right to revise our current rates. If any increase should arise we will of course keep you well informed. Availability: Please note that if a certain hotel is not available at the time of booking, then we will gladly make alternative suggestions in the same category. We will advise you accordingly with the surcharge if any. As a result, we would highly appreciate it if you could advise us to block rooms soonest possible to guarantee the rooms and rates in period of high and peak season.												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.gloriousholidaysindia.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Vietnam - Private Classic 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="22243"/>
						</form>
						</div>
						
						";i:1;s:69:"Book Vietnam - Private Classic Tour - 8 Nights / 9 Days Tour Packages";i:2;s:115:"book vietnam - private classic tour - 8 nights / 9 days tour packages, heritage tour packages, ha noi tour packages";i:3;s:159:"Glorious Holidays Pvt. Ltd. offers Vietnam - Private Classic Tour - 8 Nights / 9 Days tour package, budget Heritage tour packages for Ha Noi at exciting price.";i:4;s:691:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Ha Noi"        
		                 },
		      "description": "All international airport tax
International flights & domestic flights
Early check in or late check out
Travel insurance 
Optional tours
Visa arrangement & Visa stamp at international gate. 
Drink & Beverage in meals
Compulsory TIPPING for local guide and van driver01-1015-04",
		      "name": "Vietnam - Private Classic Tour",
		      "telephone": "+91-9884172077"
		    }
		    </script>
			";i:5;N;}