a:6:{i:0;s:12357:"				<div class="h1"><h1>Royal Himachal Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.travelbhai.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.travelbhai.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Royal Himachal 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">
						9 Nights / 10 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Dalhousie, Manali, Dharamshala, Amritsar</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.travelbhai.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Royal Himachal 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="50161"/>
						</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/397474/97977.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_14/397474/97977.jpg"  width="150" height="150"    alt="Royal Himachal Tour" title="Royal Himachal 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> Amritsar - Manali(8 Hrs Approx) 
								</p>
								<p class="aj">Today Morning Pick Up From Amritsar Airport/Railway Station And After That Drive To Manali.(Manali Is Also Famous For Adventure Sports Like Skiing, Hiking, Mountaineering, Paragliding, Rafting, Trekking, Kayaking, And Mountain Biking. In Short, Manali-Is The "Valley Of The Gods" And An Ideal Place For The Ones In Search Of Both Adventure And Comfort. Reach Manali Check Into At Hotel .Dinner And Overnight Stay 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 2:</b> Manali Half Day City Tour (3 - 4 Hrs) 
								</p>
								<p class="aj">Today Morning After Breakfast Half Day City Tour Visiting Hadimba Devi Temple (Tour Visiting Hadimba Devi Temple Is Made By Wooden Temple Is The Located In Middle Of Forest Van Vihar), Old Manali, Us Club, Vashisht Village And Tibetan-Monastery. Later In The Evening Free To Explore The Shopping Malls (Mall Road & Ibex Market) Of Manali. Dinner & Overnight Stay 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 3:</b> Manali - Rohtang Pass / Up To Snow Line (52 Km) 
								</p>
								<p class="aj">Early Morning Proceed For Full Day Tour Of Rohtang Pass Up To Snow Line - The Majesty Of The Mountains And The Glaciers Can Be Seen At Their Best After Enjoying This Snowy Heaven. Enjoy Snow Scooter’s Ride And Take A Sledge Ride Down The Slopes & Try Luck By Climbing The Little Snow Hills. On Descending To Manali, Halt At The Rahalla Falls. The Magnificent Views And Natural Beauty Are A Never-Ending Source Of Delight. Also Halt At Marhi, Ralha Falls, Nehru Kund. Dinner And Overnight Stay At The 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 4:</b> Manali - Nagger Castle 
								</p>
								<p class="aj">Today Morning After Breakfast At 10 Am Drive To Nagger And Roerich Art Gallery Afternoon At 4 Pm Return To Manali And Visit Van Vihar. Dinner And Overnight Stay At Hotel.<br />
Naggar Castle - Offers Picturesque And Delightful View Of Whole Naggar City Which Is Worth To Watch. It Was Once The Residence Of Raja Of Kullu Which Is Now Converted In Hotel Run By Hptdc. Most Of Bollywood Movies Are Shot Over Here Just Due To Its Overwhelming Sceneries.<br />
Roerich Art Gallery: It Perfectly Displays The Art Of Famous Russian Painter Nikolai Konstantinovich Reorikh. . This Place Promises To Enchant The Visitors With Their Majestic Beauty, Enthrilling View And Serenity Surrounding It.</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> Dharamshala - Local Sight Seeing 
								</p>
								<p class="aj">After Breakfast, Drive To Local Sightseeing Covering Official Residence Of Dalai Lama, Mcleodganj Etc. The Village Of Mcleod Ganj Lying In The Upper Reaches Is Known Worldwide For The Presence Of The Tenzin Gyatso. In May 1960, The Central Tibetan Administration (Cta) Was Moved To Dharamshala. Dinner And Overnight Stay At The 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 6:</b> Dharamshala - Dalhousie 
								</p>
								<p class="aj">Morning After Breakfast, Drive To Dalhousie (4 Hrs), Situated At 2039 Mts In The Outer Slopes Of The Dhaula Dhar Range With Its Natural Beauty And Natural Surroundings. Arrive & Transfer To Hotel. Rest Of The Day At Leisure To Explore The Market. Dinner And Overnight Stay At The 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> Dalhousie - Khajjiar - Dalhousie 
								</p>
								<p class="aj">Morning Drive To Khajjiar, One Of The Most Scenic Saucer Shaped Plateau And Is Surrounded By Dense Pine And Deodar Forests, Its Beauty Has Further Been Enhanced By A Small Lake In The Center With A Floating Island And 9-Hole Golf Course Here Are The Other Interesting Places To Cover. Return To Dalhousie Hotel. Dinner And Overnight Stay At The 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 8:</b> Dalhousie - Amritsar(Approx 8 Hrs) 
								</p>
								<p class="aj">After Breakfast Drive To Dalhousie On Arrival In This Himalayan Hill Resort Check In At The Hotel. The Rest Of The Day Is Free For You To Enjoy At Leisure. We Suggest You Enjoy A Walk Along The Mall Road, Overnight Stay At Hotel In Dalhousie.</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> Amritsar Sightseeing Wagah Border 
								</p>
								<p class="aj">After Breakfast. Start Your Full Day City Tour With The Blessings Of Golden Temple-The Most Important Sikh Shrine Which Is Also Called Mecca For The Sikhs Is A Living Symbol Of The Spiritual And Historical Traditions Of The Sikhs.<br />
Then Visit Jallianwala Bagh- Where, On April 13, 1919, British Soldiers Opened Fire On An Unarmed Forbidden Gathering, Killing Hundreds Of Civilians. After Lunch Visit Maharaja Ranjit Singh Summer Palace Museum. The Summer Place Of Maharaja Ranjit Singh Which Is Situated In The Heart Of Ram Bagh, Amritsarvisit Indo-Pak Wagah Border To Watch Flag Retreat Ceremony- Wagah, An Army Outpost On Indo-Pak Border 30 Kms From Amritsar Where The Daily Highlight Is The Evening "Beating The Retreat" Ceremony.<br />
Soldiers From Both Countries March In Perfect Drill, Going Through The Steps Of Bringing Down Their Respective National Flags. As The Sun Goes Down, Nationalistic Fervor Rises And Lights Are Switched On Marking The End Of The Day Amidst Thunderous Applause. Return To Hotel. Overnight Stay.</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 10:</b> Amritsar Drop 
								</p>
								<p class="aj">Today Morning After Breakfast Check Out The Hotel , Go Back To Amritsar By Private Tempo. Drop At Amritsar Airport/Railway Station.</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">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.travelbhai.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Royal Himachal 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="50161"/>
						</form>
						</div>
						
						";i:1;s:59:"Book Royal Himachal Tour - 9 Nights / 10 Days Tour Packages";i:2;s:137:"book royal himachal tour - 9 nights / 10 days tour packages, valley tour packages, dalhousie, manali, dharamshala, amritsar tour packages";i:3;s:165:"Travel Bhai offers Royal Himachal Tour - 9 Nights / 10 Days tour package, budget Valley tour packages for Dalhousie, Manali, Dharamshala, Amritsar at exciting price.";i:4;s:431:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Dalhousie, Manali, Dharamshala, Amritsar"        
		                 },
		      "description": "",
		      "name": "Royal Himachal Tour",
		      "telephone": "+91-9811617033"
		    }
		    </script>
			";i:5;N;}