a:6:{i:0;s:9538:"				<div class="h1"><h1>Enchanting Himachal Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.geetcompany.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.geetcompany.com/holiday-tour-packages.htm" title="Holiday Tour Packages">Holiday Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Enchanting Himachal Tour</p>
				<br />
				
									<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>
					
					<table class="w100 formTable imgWidth">
					<tr>
					
											<td class="p10px vat imgWidth150 w150px">
						<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_1/22362/55095.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_1/22362/55095.jpg"  width="150" height="150"    alt="Enchanting Himachal Tour" title="Enchanting Himachal 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_1/22362/55096.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_1/22362/55096.jpg"  width="150" height="150"    alt="Enchanting Himachal Tour" title="Enchanting Himachal Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											
					<td class="p10px">
											<p class="mb5px"><b>Tour Code :</b> 113</p>
												<p class="mb5px"><b>Duration :</b> 
						6 Nights / 7 Days 
						</p>
												<p class="mb5px"><b>Destination Covered :</b> Chandigarh City, Manali, Shimla</p>
												<p><b>Price (Starting From) :</b>						
						INR 15999 Per Person						</p>
												<br />
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.geetcompany.com/travel-inquiry.htm">
						<input type="hidden" name="subject" value="Enchanting Himachal Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="buttonBig p10px20px c5px b large dib">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="28082"/>
						</form>
						</p>
											</td>
					</tr>
					</table>
											<div class="mt7px dif">* Mentioned prices may vary depending upon date of travel, hotel availability, surge pricing and seasonal rush.</div>
											<br />
					
					<div class="packageTabs myTabs horizontal mc"><!--MY TABS STARTS-->
					<ul class="fo lsn m0px p0px">
					
											<li id="tab2"><a href="#data2">Itinerary</a></li>
												<li id="tab4"><a href="#data4">Tour Detail</a></li>
												<li id="tab6"><a href="#data6">Terms &amp; Conditions</a></li>
											</ul>
					
					
											<div class="ic bdr" id="data2"><!--DATA2 START-->
						<br />
						<ul class="lsn m0px p0px">
									<li>
									<p class="b mb5px">Day 1: Delhi - Shimla
									</p>
									<div class="data p10px">Pick up from Delhi railway station/Airport, our vehicle pick you & drive you to Shimla (8-9 Hrs). Evening free for leisure & you have a choice to visit Mall Road or at leiure at hotel. Dinner and Overnight stay at Hotel in Shimla.</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 2: Shimla Local Sightseeing
									</p>
									<div class="data p10px">After Breakfast proceed for wonderful day excursion to Kufri. In Kufri enjoy a walk through thick ceder woods to Mahasu Pick for amazing view of mighty Himalayas. Enjoy Horse riding at your own cost. Evening come back to the hotel. Enjoy your Dinner at Hotel. Overnight stay at hotel in Shimla.</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 3: Shimla - Manali
									</p>
									<div class="data p10px">After Breakfast leave for Manali. (350 Kms/ 10 Hrs). Late afternoon arrive Manali, check into your Hotel & get fresh. Dinner at Hotel. Overnight stay at hotel in Manali.</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 4: Manali Local Sightseeing
									</p>
									<div class="data p10px">After Breakfast proceed for full day local sightseeing of Manali like Hidimba Temple, Tibetan Monastery, Vashistha Temple for "Hot & Cold water Kund", Club House. Evening at leisure to enjoy at Mall road. Dinner and overnight stay at hotel in Manali.</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 5: Manali - Rohtang Pass - Manali (At own by guest)
									</p>
									<div class="data p10px">After Breakfast proceed on a day excursion to the Rohtang Pass (On Own) also called Snow Point of Himachal - enjoy the beauty of year round snow caped mountains. The rest of the day is free to explore this picturesque town on your own. Evening return to hotel. Dinner and overnight stay at hotel in Manali.</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 6: Manali - Chandigarh
									</p>
									<div class="data p10px">After Breakfast leave for Chandigarh (350 Kms / 10 Hrs). Evening arrive Chandigarh. Evening at leisure. Dinner and overnight stay at hotel in Chandigarh.</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 7: Chandigarh - Delhi
									</p>
									<div class="data p10px">After Breakfast local sightseeing in Chandigarh, visit Rock Garden & Pinjore Garden. Afternoon check out and proceed for Delhi (5 hrs drive).</div>					
									</li>
									<br />					
							</ul>						<!--DATA2 EMD--></div>
											
						<div class="ic bdr" id="data4"><!--DATA4 START-->
						<br />
						Shimla<br />
<br />
The former summer capital of the British in India, and the present capital of Himachal Pradesh, Shimla has been blessed with all the natural bounties which one can think of. It has got a scenic location, it is surrounded by green hills with snow capped peaks. The spectacular cool hills accompanied by the structures made during the colonial era creates an aura which is very different from other hill. Bulging at its seams with unprecedented expansion, Shimla retains its colonial heritage, with grand old buildings, among them are the stately Viceregal Lodge, charming iron lamp posts and Anglo-Saxon names.<br />
<br />
Manali<br />
<br />
Manali is an ancient town located near the end of the Kullu valley on the National Highway leading to Leh. Manali is only 40 kms. away from Kullu to the north. Manali is surrounded by the towering peaks at an arm length and is located near the snowline. Manali literally means the home of Manu. Manu is the mythological character who survived when the world was drowned in flood. The fish saved him and later he recreated human life at Manali. Manali is also known as the Switzerland of India.<br />
<br />
Chandigarh<br />
<br />
Chandigarh, the dream city of India's first Prime Minister, Sh. Jawahar Lal Nehru, was planned by the famous French architect Le Corbusier. Picturesquely located at the foothills of Shivaliks, it is known as one of the best experiments in urban planning and modern architecture in the twentieth century in India. Chandigarh derives its name from the temple of "Chandi Mandir" located in the vicinity of the site selected for the city. The deity 'Chandi', the goddess of power and a fort of 'garh' laying beyond the temple gave the city its name "Chandigarh-The City Beautiful".Any Meals other than mentioned in inclusions<br />
Any Entrance & Guide Charges<br />
Train / Air Tickets<br />
Personal expenses such as tips, porterage, telephone calls, rooms service, etc<br />
This price is not valid for long Weekend.<br />
Travel Insurance.<br />
Trip to Rohtang Pass in Manali<br />
GST - 3.09% extra01-1031-03							<p class="b mb5px dif">Inclusions :</p>
							<ul>
																	<li>Sightseeing</li>
																				<li>Transport</li>
																	</ul>
							<br />
														<p class="b mb5px dif">Exclusions :</p> <ul><li>Any Meals other than mentioned in inclusions</li><li>
Any Entrance & Guide Charges</li><li>
Train / Air Tickets</li><li>
Personal expenses such as tips, porterage, telephone calls, rooms service, etc</li><li>
This price is not valid for long Weekend.</li><li>
Travel Insurance.</li><li>
Trip to Rohtang Pass in Manali</li><li>
GST - 3.09% extra</li></ul><br />
													<!--DATA4 EMD--></div>
												<div class="ic bdr" id="data6"><!--DATA6 START-->
						<br />
						* 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. ~^#^~						<!--DATA6 EMD--></div>
											
					<!--MY TABS END--></div>
					";i:1;s:63:"Book Enchanting Himachal Tour - 6 Nights / 7 Days Tour Packages";i:2;s:132:"book enchanting himachal tour - 6 nights / 7 days tour packages, valley tour packages, chandigarh city, manali, shimla tour packages";i:3;s:178:"Book Enchanting Himachal Tour - 6 Nights / 7 Days tour packages from Geet & Company - Get attractive 6 Nights / 7 Days Valley  tour packages for  Chandigarh City, Manali, Shimla.";i:4;s:2446:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Chandigarh City, Manali, Shimla"        
		                 },
		      "description": "Shimla

The former summer capital of the British in India, and the present capital of Himachal Pradesh, Shimla has been blessed with all the natural bounties which one can think of. It has got a scenic location, it is surrounded by green hills with snow capped peaks. The spectacular cool hills accompanied by the structures made during the colonial era creates an aura which is very different from other hill. Bulging at its seams with unprecedented expansion, Shimla retains its colonial heritage, with grand old buildings, among them are the stately Viceregal Lodge, charming iron lamp posts and Anglo-Saxon names.

Manali

Manali is an ancient town located near the end of the Kullu valley on the National Highway leading to Leh. Manali is only 40 kms. away from Kullu to the north. Manali is surrounded by the towering peaks at an arm length and is located near the snowline. Manali literally means the home of Manu. Manu is the mythological character who survived when the world was drowned in flood. The fish saved him and later he recreated human life at Manali. Manali is also known as the Switzerland of India.

Chandigarh

Chandigarh, the dream city of India's first Prime Minister, Sh. Jawahar Lal Nehru, was planned by the famous French architect Le Corbusier. Picturesquely located at the foothills of Shivaliks, it is known as one of the best experiments in urban planning and modern architecture in the twentieth century in India. Chandigarh derives its name from the temple of "Chandi Mandir" located in the vicinity of the site selected for the city. The deity 'Chandi', the goddess of power and a fort of 'garh' laying beyond the temple gave the city its name "Chandigarh-The City Beautiful".Any Meals other than mentioned in inclusions
Any Entrance & Guide Charges
Train / Air Tickets
Personal expenses such as tips, porterage, telephone calls, rooms service, etc
This price is not valid for long Weekend.
Travel Insurance.
Trip to Rohtang Pass in Manali
GST - 3.09% extra01-1031-03",
		      "name": "Enchanting Himachal Tour",
		      "telephone": "+91-9896771268"
		    }
		    </script>
			";i:5;N;}